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.