Laravel 8 での「ターゲット クラス コントローラーが存在しない」エラーの修正
Laravel 8 を使用すると、次のエラーが発生する場合があります。ターゲット クラス [ApiRegisterController] が存在しません。」これは、Laravel がルート グループ内の名前空間プレフィックスを処理する方法が変更されたために発生します。
Laravel 8 では、以前はコントローラー ルート定義にプレフィックスを追加していた RouteServiceProvider の $namespace プロパティが、次によって null に設定されます。デフォルト。これは、ルート内のコントローラーを参照するときに完全修飾クラス名を使用する必要があることを意味します。
この問題を解決するには、いくつかのオプションがあります:
完全修飾クラス名を使用する:
ルート内のコントローラーの完全修飾クラス名を使用します。例:
Route::get('register', 'App\Http\Controllers\Api\RegisterController@register');
ルート グループの名前空間プレフィックスの定義:
古い方法を好む場合は、RouteServiceProvider でルート グループの名前空間プレフィックスを定義できます。その方法は次のとおりです:
public function boot() { ... Route::prefix('api') ->middleware('api') ->namespace('App\Http\Controllers') ->group(base_path('routes/api.php')); ... }
$namespace プロパティの設定:
RouteServiceProvider の $namespace プロパティのコメントを解除することがいくつかのソースで言及されていますが、これは URL 生成にのみ影響します。
Update for Laravel 8.0.2 以降:
バージョン 8.0.2 以降の Laravel 8 の新しいコピーをインストールしている場合は、RouteServiceProvider 内の保護された $namespace メンバー変数のコメントを解除して、古い動作に戻すことができます。
重要なのは、ルート グループの名前空間プレフィックスを定義することです。好みに応じて、上記のいずれかの方法を選択できます。 Laravel 8 の「ターゲット クラス コントローラーが存在しません」エラーを修正します。
以上がLaravel 8で「ターゲットクラスコントローラーが存在しません」エラーを修正する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。