Maison > développement back-end > tutoriel php > Laravel 8 « Le contrôleur de classe cible n'existe pas » : comment résoudre les problèmes d'espace de noms dans les routes ?

Laravel 8 « Le contrôleur de classe cible n'existe pas » : comment résoudre les problèmes d'espace de noms dans les routes ?

Patricia Arquette
Libérer: 2024-12-29 06:20:09
original
427 Les gens l'ont consulté

Laravel 8

Erreur « Le contrôleur de classe cible n'existe pas » lors de l'utilisation de Laravel 8

Problème

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.

Explication

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.

Solution

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');
Copier après la connexion

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'));
Copier après la connexion

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';
Copier après la connexion

Notes supplémentaires

  • Assurez-vous que votre contrôleur étend le contrôleur class.
  • Vérifiez que la définition de votre itinéraire dans api.php est correcte.
  • Vérifiez si un middleware appliqué à votre itinéraire pourrait être à l'origine du problème.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal