Lors de l'utilisation d'un contrôleur dans Laravel 8, vous pouvez rencontrer un Message "Erreur "Le contrôleur de classe cible n'existe pas"" bien que le contrôleur soit présent et localisé correctement.
Dans Laravel 8, les espaces de noms ne sont plus automatiquement préfixés pour acheminer les groupes. Par conséquent, vous devez utiliser le nom de classe complet pour vos contrôleurs lorsque vous définissez des routes sans préfixes d'espace de noms.
Option 1 : Nom de classe entièrement qualifié
Utilisez le nom de classe complet de votre contrôleur dans la définition de l'itinéraire :
Route::get('register', 'App\Http\Controllers\Api\RegisterController@register');
Option 2 : Définir l'espace de noms dans le groupe de routes
Si vous préférez l'approche précédente, définissez l'espace de noms explicitement dans le groupe de routes approprié dans AppProvidersRouteServiceProvider :
Route::prefix('api') ->middleware('api') ->namespace('App\Http\Controllers') ->group(base_path('routes/api.php'));
Option 3 : décommenter l'espace de noms dans RouteServiceProvider (Laravel 8.0.2 et Supérieur)
Dans les nouvelles installations de Laravel 8 depuis la version 8.0.2, vous pouvez décommenter la variable protégée $namespace dans AppProvidersRouteServiceProvider :
// protected $namespace = 'App\Http\Controllers';
En implémentant l'une de ces solutions, vous pouvez résoudre l'erreur « Le contrôleur de classe cible n'existe pas » et utiliser avec succès votre contrôleur dans Laravel 8.
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!