Heim >Backend-Entwicklung >PHP-Tutorial >Wie behebe ich den Fehler „Zielklassen-Controller existiert nicht' in Laravel 8?

Wie behebe ich den Fehler „Zielklassen-Controller existiert nicht' in Laravel 8?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-19 19:29:12402Durchsuche

How to Fix the

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn