Sie verwenden Laravel 8. In einer Neuinstallation von Laravel 8 wird Ihren Routengruppen, in die Ihre Routen geladen werden, kein Namespace-Präfix zugewiesen.
"In früheren Versionen von Laravel RouteServiceProvider
enthielt das eine $namespace
Eigenschaft. Der Wert dieser Eigenschaft wurde automatisch den Controller-Routendefinitionen vorangestellt und ruft den action
Helfer / die URL::action
Methode auf. In Laravel 8.x ist diese Eigenschaft null
standardmäßig. Dies bedeutet, dass kein automatisches Namespace-Präfix vorhanden ist wird von Laravel gemacht. " Laravel 8.x Docs - Versionshinweise
Sie müssten den vollständig qualifizierten Klassennamen für Ihre Controller verwenden, wenn Sie in Ihren Routen auf sie verweisen, wenn Sie das Namespace-Präfix nicht verwenden.
use App\Http\Controllers\UserController;
Route::get('/users', [UserController::class, 'index']);
Route::get('/users', 'App\Http\Controllers\UserController@index');
Wenn Sie den alten Weg bevorzugen:
App\Providers\RouteServiceProvider
::
public function boot()
{
...
Route::prefix('api')
->middleware('api')
->namespace('App\Http\Controllers')
->group(base_path('routes/api.php'));
...
}
Tun Sie dies für alle Routengruppen, für die Sie einen deklarierten Namespace möchten.
Die $namespace
Eigenschaft:
Obwohl in den Versionshinweisen eine $namespace
Eigenschaft erwähnt wird, die auf Ihrer festgelegt RouteServiceProvider
und in Ihrer kommentiert werden soll, RouteServiceProvider
hat dies keine Auswirkungen auf Ihre Routen. Derzeit wird nur ein Namespace-Präfix zum Generieren von URLs zu Aktionen hinzugefügt. Sie können diese Variable also festlegen, aber sie selbst fügt diese Namespace-Präfixe nicht hinzu. Sie müssten dennoch sicherstellen, dass Sie diese Variable verwenden, wenn Sie den Namespace zu den Routengruppen hinzufügen.
Diese Informationen finden Sie jetzt im Upgrade-Handbuch
Laravel 8.x Docs - Upgrade-Handbuch - Routing
Mit dem, was das Upgrade - Handbuch ist das zeigt wichtigen Teil ist , dass Sie einen Namespace auf Ihren Routen Gruppen definieren. Das Festlegen der $namespace
Variablen selbst hilft nur beim Generieren von URLs zu Aktionen.
Auch hier, und ich kann das nicht genug betonen, besteht der wichtige Teil darin, den Namespace für die Routengruppen festzulegen, was sie zufällig tun, indem sie direkt auf die Mitgliedsvariable $namespace
im Beispiel verweisen .
Aktualisieren:
Wenn Sie seit Version 8.0.2 eine neue Kopie von Laravel 8 installiert haben laravel/laravel
, können Sie die protected $namespace
Mitgliedsvariable aus dem Kommentar entfernen RouteServiceProvider
, um zum alten Weg zurückzukehren, da die Routengruppen so eingerichtet sind, dass diese Mitgliedsvariable für den Namespace für die Gruppen verwendet wird.
Der einzige unkommentierte Grund, der den den Routen zugewiesenen Controllern das Namespace-Präfix hinzufügen würde, besteht darin, dass die Routengruppen so eingerichtet sind, dass diese Variable als Namespace verwendet wird:
...
->namespace($this->namespace)
...
Api
Ordner?