Behebung des Fehlers „Zielklassen-Controller existiert nicht“ in Laravel 8
Bei der Verwendung von Laravel 8 kann der folgende Fehler auftreten: „ Die Zielklasse [ApiRegisterController] existiert nicht.“ Dies geschieht aufgrund einer Änderung in der Art und Weise, wie Laravel Namespace-Präfixe in Routengruppen verarbeitet.
In Laravel 8 ist die Eigenschaft $namespace im RouteServiceProvider, die zuvor ein Präfix zu Controller-Routendefinitionen hinzugefügt hat, jetzt auf null gesetzt Standard. Dies bedeutet, dass der vollständig qualifizierte Klassenname verwendet werden muss, wenn auf Controller in Routen verwiesen wird.
Um dieses Problem zu beheben, haben Sie mehrere Möglichkeiten:
Verwendung des vollständig qualifizierten Klassennamens:
Verwenden Sie in Ihrer Route den vollständig qualifizierten Klassennamen für Ihren Controller. Zum Beispiel:
Route::get('register', 'App\Http\Controllers\Api\RegisterController@register');
Namespace-Präfix in Routengruppen definieren:
Wenn Sie den alten Weg bevorzugen, können Sie im RouteServiceProvider ein Namespace-Präfix für Ihre Routengruppen definieren. So geht's:
public function boot() { ... Route::prefix('api') ->middleware('api') ->namespace('App\Http\Controllers') ->group(base_path('routes/api.php')); ... }
Festlegen der $namespace-Eigenschaft:
Während in einigen Quellen erwähnt wird, dass die $namespace-Eigenschaft im RouteServiceProvider auskommentiert wird, wirkt sich dies nur auf die URL-Generierung aus Aktionen und fügt das Namespace-Präfix nicht selbst zu Routen hinzu.
Update für Laravel 8.0.2 und höher:
Wenn Sie eine neue Kopie von Laravel 8 seit Version 8.0.2 installiert haben, können Sie die geschützte $namespace-Mitgliedsvariable im RouteServiceProvider auskommentieren, um zum alten Verhalten zurückzukehren.
Denken Sie daran, dass der Schlüssel darin besteht, ein Namespace-Präfix für Ihre Routengruppen zu definieren. Je nach Wunsch können Sie eine der oben genannten Methoden auswählen, um das „Ziel“ zu beheben Fehler „Klassencontroller existiert nicht“ in Laravel 8.
Das obige ist der detaillierte Inhalt vonWie behebe ich den Fehler „Zielklassen-Controller existiert nicht' in Laravel 8?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!