Résolution de l'erreur « Classe cible introuvable » dans Laravel 8
Rencontre de l'erreur « Le contrôleur de classe cible n'existe pas » lorsque vous travaillez avec Laravel 8 peut être frustrant. Ce problème est dû à une modification de la configuration par défaut de Laravel qui élimine le préfixe automatique des espaces de noms.
Comprendre le problème
Dans les versions précédentes de Laravel, les groupes de routes recevaient automatiquement un préfixe d'espace de noms, mais ce comportement a été supprimé dans Laravel 8. Par conséquent, lorsqu'on fait référence aux contrôleurs dans les routes, le nom de classe complet (FQCN) doit être utilisé pour garantir une résolution appropriée.
Options de solution
// Register route using FQCN Route::get('register', 'App\Http\Controllers\Api\RegisterController@register');
a. Ajouter un espace de noms aux groupes de routage :
// Add namespace to 'api' route group Route::prefix('api') ->middleware('api') ->namespace('App\Http\Controllers') ->group(base_path('routes/api.php'));
b. Utilisez la propriété $namespace (facultatif) :
// Set namespace property in RouteServiceProvider protected $namespace = 'App\Http\Controllers';
En définissant la propriété $namespace, vous pouvez facilement générer des URL vers des actions.
Mise à niveau à partir des versions précédentes de Laravel :
Si vous effectuez une mise à niveau à partir d'une version précédente de Laravel, vous pouvez décommenter la propriété $namespace dans RouteServiceProvider pour restaurer le préfixe automatique de l'espace de noms pour les routes.
Remarques supplémentaires :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!