【发布时间】:2023-03-11 07:05:01
【问题描述】:
我想将控制器添加到我已经存在的项目中。写了一个控制器文件,在 admin_api 路由文件中添加了链接,并调整了我需要的视图。
在我的本地机器上一切正常。
在生产时它失败了(它应该检索一个集合,然后由 vue js 组件处理和显示)并且网络监视器显示错误 500。
我 ssh 进入网站并运行 php artisan route:list,这给了我错误
In Container.php line 779:
Class App\Http\Controllers\Admin\Api\StatsController does not exist
虽然文件 StatsController 位于 App\Http\Controllers\Admin\API\
玩了之后,我意识到问题出在文件夹名称“API”上,因为 laravel 正在寻找“Api”。所以显然它是区分大小写的。 将控制器放在新文件夹“Api”中解决了这个问题。 将所有其他“API”控制器移动到“Api”会破坏它们的路由。 运行 php artisan route:list 和 RouteServiceProvider 时,所有路由都显示为 Admin/Api 下。
我不明白这是在哪里注册的?有没有办法改变这个? 我发现控制器现在位于单独的文件夹中很烦人,这对我来说似乎很荒谬。如果原始控制器似乎与其他配置相矛盾,我不太了解它们是如何工作的。
使用 Laravel 5.7
如果有任何见解,我将不胜感激!
谢谢
【问题讨论】:
-
如果您在不区分大小写的平台 (Windows) 上进行开发,但部署到区分大小写的平台(实际上是其他任何平台)上,您将会遇到 Bad Time™。不要有两个单独的文件夹。选择一种一致的方式来利用和标准化它。
-
检查 StatsController 的命名空间并确保它的大小写与其他的一致。你也可以发布导致这个问题的路由 sn-p 吗?
-
@ceejayoz 啊,好吧,这解释了问题的根源。尽管我觉得奇怪的是原始类都可以正常工作,尽管它们的案例是错误的(目录是 API 和 namspace Api)
-
@Wolfie 就像我说的那样,这将在 Windows 上发生,因为文件系统不区分大小写。当您部署到不是 Windows 的东西时,它会中断。
-
@ceejayoz 我明白了。我的意思是大多数类在几个月前最初部署时正确部署,尽管在纸面上它们应该也坏了。几天前才出现这个问题的新课程。
标签: laravel