Erreur : "Le contrôleur de classe cible n'existe pas" dans Laravel 8
Lors de l'utilisation de Laravel 8, vous pouvez rencontrer une erreur indiquant "Cible la classe [ApiRegisterController] n'existe pas" même si la classe se trouve au bon emplacement. Cette erreur provient d'un changement dans la gestion de l'espace de noms dans Laravel 8.
Auparavant, les contrôleurs étaient automatiquement préfixés avec l'espace de noms défini dans RouteServiceProvider. Cependant, dans Laravel 8, ce préfixe n'est plus appliqué par défaut. Par conséquent, vous devez définir explicitement le nom de classe complet de vos contrôleurs lorsque vous les référencez dans les routes.
Solution 1 : Nom de classe complet
Pour résoudre ce problème problème, remplacez la référence du contrôleur dans votre itinéraire par le nom de classe complet :
Route::get('register', 'App\Http\Controllers\Api\RegisterController@register');
Solution 2 : espace de noms Préfixe
Vous pouvez également réactiver le préfixe de l'espace de noms en modifiant le RouteServiceProvider :
protected $namespace = 'App\Http\Controllers';
Cela préfixera tous les contrôleurs référencés dans les routes avec l'espace de noms AppHttpControllers.
Solution 3 : utiliser l'espace de noms Groupe
Dans le fichier de route api.php, vous pouvez définir un groupe d'espaces de noms pour appliquer un espace de noms à des routes spécifiques :
Route::group(['namespace' => 'Api'], function () { Route::get('register', 'RegisterController@register'); });
Notes 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!