【问题标题】:Routing to Controller fails in Laravel 4在 Laravel 4 中路由到控制器失败
【发布时间】:2012-12-21 11:54:40
【问题描述】:

我正在尝试在 Laravel 4 中注册我的控制器。在 routes.php 我有:

Route::get("/","HomeController@index");
Route::get("search","SearchController@index");

现在,家庭控制器路由很好,但是搜索控制器路由给我一个错误:

ReflectionException: Class SearchController does not exist

然而,类确实存在。我什至尝试创建另一个示例控制器,但无济于事,因为出现了相同的消息。

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    我遇到了同样的问题,作曲家dump-autoload 没有解决。

    我意识到我的类文件没有在 Composer 生成的 vendor/composer/autoload_classmap.php 中声明。

    我清除了缓存文件夹的内容。在 Linux 中,此文件夹为: ~/.composer/缓存 在 Windows 7 中:C:\Users\\AppData\Local\Composer\files 如果 bootstrap/compiled.php 存在,也应该将其删除,或者运行:php artisan clear-compiled

    在此之后,我删除了 composer.lock 和 vendor 文件夹并运行:composer install。 这将我的类文件放入 autoload_classmap.php 但是仍然抛出 ReflectionException...

    作为最后的尝试,我从已经在使用的项目中复制并重命名了另一个控制器,这解决了问题。

    【讨论】:

    • 使用 composer 做同样事情的一个简单方法是在 routes.php 中注释掉对控制器的引用,运行 php artisan dump 然后取消注释这些引用。
    【解决方案2】:

    名称在 L4 中区分大小写。并且方法名称应该完全匹配(例如 getIndex,而不是 index())。

    另外,因为它使用作曲家包,你需要运行: php composer dump-autoload 检测任何新的类/控制器

    【讨论】:

    • 谢谢!这确实是作曲家的问题
    猜你喜欢
    • 2013-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-11
    • 1970-01-01
    • 2013-10-05
    • 2023-03-27
    • 1970-01-01
    相关资源
    最近更新 更多