6

コントローラーを Laravel 4 に登録しようとしroutes.phpています。

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

これで、ホーム コントローラー ルートは問題ありませんが、検索コントローラー ルートでエラーが発生します。

ReflectionException: Class SearchController does not exist

ただし、クラス存在します。別のサンプル コントローラを作成しようとしましたが、同じメッセージが表示されたので役に立ちませんでした。

4

2 に答える 2

20

L4 では名前の大文字と小文字が区別されます。また、メソッド名は正確に一致する必要があります (たとえば、 index() ではなく getIndex )。

また、composer パッケージを使用するため、次を実行する必要があります: php composer dump-autoload 新しいクラス/コントローラーを検出する

于 2013-01-07T17:58:33.643 に答える
2

私は同じ問題を抱えていましたが、作曲家dump-autoloadはそれを解決しませんでした。

Composer によって生成された vendor/composer/autoload_classmap.php で、クラス ファイルが宣言されていないことに気付きました。

キャッシュフォルダの内容をクリアしました。Linux では、このフォルダーは ~/.composer/cache で、Windows 7 では C:\Users\\AppData\Local\Composer\files ですphp artisan clear-compiled

この後、composer.lock と vendor フォルダーを削除して、composer install を実行しました。これにより、クラスファイルがautoload_classmap.phpに配置されましたが、ReflectionExceptionがまだスローされていました...

最後の試みとして、既に使用されていたプロジェクトから別のコントローラーをコピーして名前を変更したところ、問題は解決しました。

于 2014-03-21T14:43:04.903 に答える