Laravel8でTarget class does not exist が出る時
Route::group(['prefix' => 'test'], function() {
Route::get('/','TestController@index');
});
こんな感じでtest
にアクセスし、indexアクションの処理をさせようとしたら、
Target class [TestController] does not exist
というエラーが発生したのでスペルミスなどを疑ってみましたが Laravel8では少し違う様です。
英語は苦手なので解釈を間違えていたらすみません。
エラーの原因
Route::middleware('web')
->group(base_path('routes/web.php'));
Laravel8ではこんな感じでApp\Providers\RouteServiceProvider.php
の中にある$namespace
変数が削除されて宣言方法が変わった様なことを言ってる気がする。
解決方法は
protected $namespace = 'App\Http\Controllers';
//boot()の上で定義されている変数にこれを追加する
public function boot()
{
$this->configureRateLimiting();
$this->routes(function () {
Route::middleware('web')
->namespace($this->namespace)//この行を追加
->group(base_path('routes/web.php'));
});
}
上記を追加してtest
にアクセスするとしっかりとアクションの処理を呼び出せていました。
他の方法として
Route::get('path','App\Http\Controllers\YourController@index');
こんな感じで強引に書くのもありみたい。
他にも
use App\Http\Controllers\YourController;
Route::get('path', 'YourController@all');
Route::get('path', [YourController::class, 'all']);
こんな書き方もあるみたい。
コントローラーが少ない時は最後の3つでいいかもしれないけど規模が大きいとProvider.php
いじった方がいいのかも。
Author And Source
この問題について(Laravel8でTarget class does not exist が出る時), 我々は、より多くの情報をここで見つけました https://qiita.com/Naruse__0/items/51364b68164eafbcc3ce著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .