Heim >Backend-Entwicklung >PHP-Tutorial >Warum gibt Laravel 8 den Fehler „Zielklassen-Controller existiert nicht' aus und wie kann ich ihn beheben?
Fehler: „Target Class Controller Does Not Exist“ in Laravel 8
Bei der Verwendung von Laravel 8 kann ein Fehler mit der Meldung „Target „Klasse [ApiRegisterController] existiert nicht“, obwohl sich die Klasse am richtigen Speicherort befindet. Dieser Fehler ist auf eine Änderung in der Namespace-Verarbeitung in Laravel 8 zurückzuführen.
Zuvor wurde Controllern automatisch der im RouteServiceProvider definierte Namespace vorangestellt. In Laravel 8 wird dieses Präfix jedoch nicht mehr standardmäßig angewendet. Daher müssen Sie den vollständig qualifizierten Klassennamen Ihrer Controller explizit definieren, wenn Sie in Routen auf sie verweisen.
Lösung 1: Vollqualifizierter Klassenname
Um dieses Problem zu beheben Problem, ersetzen Sie die Controller-Referenz in Ihrer Route durch den vollständig qualifizierten Klassennamen:
Route::get('register', 'App\Http\Controllers\Api\RegisterController@register');
Lösung 2: Namespace Präfixieren
Alternativ können Sie das Namespace-Präfixieren wieder aktivieren, indem Sie den RouteServiceProvider ändern:
protected $namespace = 'App\Http\Controllers';
Dadurch wird allen Controllern, auf die in Routen verwiesen wird, der Namespace AppHttpControllers vorangestellt.
Lösung 3: Namespace verwenden Gruppe
Innerhalb der Routendatei api.php können Sie eine Namespace-Gruppe definieren, um einen Namespace auf bestimmte Routen anzuwenden:
Route::group(['namespace' => 'Api'], function () { Route::get('register', 'RegisterController@register'); });
Zusätzliche Hinweise
Das obige ist der detaillierte Inhalt vonWarum gibt Laravel 8 den Fehler „Zielklassen-Controller existiert nicht' aus und wie kann ich ihn beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!