J'ai installé l'authentification jwt et j'ai créé un contrôleur à savoir, AuthController Inside Api Directory. J'ai défini le dans routes / api.php comme:
Route::prefix('api') // ->middleware('api') // ->namespace($this->namespace) ->group(base_path('routes/api.php'));
Lorsque je frappe l'url comme: http: // localhost: 8000 / api / v1 / test, j'obtiens une erreur car la classe Cotrollers \ Api \ AuthController n'existe pas.
AuthController
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Controllers\Controller; class AuthController extends Controller { public function test() { return "Hello"; } }
RouteServiceProvider.php:
Route::group(['prefix'=>'v1', 'namespace' => 'Api'],function($app){ Route::get('/test', function(){ return "HEllo"; }); Route::get('test', 'AuthController@test'); });
4 Réponses :
Dans votre instruction Route::group
, vous avez défini l'espace de noms du groupe de routes comme 'Api'
.
Mais l'AuthController réside dans l'espace de noms App\Http\Controllers
, et non dans l'espace de noms Api
.
Pour résoudre ce problème, ajoutez un espace de noms Api dans votre App\Http\Controllers
et faites-y référence (la meilleure pratique consiste à créer un répertoire dans le répertoire Controllers nommé Api afin que la structure des répertoires suive l'espace de noms ):
namespace App\Http\Controllers\Api; use Illuminate\Http\Request; use App\Http\Controllers\Controller; class AuthController extends Controller { public function test() { return "Hello"; } }
Maintenant, j'obtiens une erreur de classe Api \ AuthController n'existe pas
Essayez d'exécuter composer dump-autoload
pour mettre à jour la référence de classe dans le chargeur automatique de compositeur
Modifiez la définition de l'espace de noms du contrôleur Auth en:
namespace App\Http\Controllers\Api;
n'a aucun effet, obtenir la même erreur de classe Api \ AuthController n'existe pas
Décommentez la ligne ->namespace($this->namespace)
.
Route :: prefix ('api') // -> middleware ('api') // -> namespace ($ this-> namespace) -> group (base_path ('routes / api.php'));
Oui. Veuillez un commenter la ligne "-> namespace" et vérifier.
J'ai rangé la question pour inclure votre php et la réponse pour inclure la réponse. À l'avenir, vous ne devriez pas publier de réponses demandant des éclaircissements, car cela rend la tâche très difficile à suivre et les informations nécessaires ne sont pas dans la question elle-même - ce qui rend plus difficile pour les autres d'aider le PO.
Ici, vous devez apporter des modifications à,
protected $namespace = 'App\Http\Controllers';
Dans le RouteServiceProvider.php, ajoutez
protected $namespace = 'Path\To\Controllers';
Comme:
App\Providers\RouteServiceProvider.php
C'est ça! Veuillez me faire savoir si cela a résolu votre problème.