2015-04-18 1 views
1

I ont une structure dossier app/HTTP/Contrôleurs/Ecole à l'intérieur duquel j'ai SchoolController:Laravel5 se prolonge dans le contrôleur de sous-dossier

namespace School; 
class SchoolController extends BaseSchoolController {..... 

et BaseSchoolController:

namespace School 
class BaseSchoolController extends \BaseController {.... 

(BaseController se trouve dans les contrôleurs mères dossier)

class BaseController extends Controller {... 

Cela donne une erreur:

FatalErrorException in SchoolController.php line 5: Class 'School\BaseSchoolController' not found 

Des idées, merci?

Semble heureux avec cette structure si:

class SchoolController extends \Controller { 
+0

Avez-vous exécuté 'composer dump-autoload'? – lukasgeiter

+0

Oui, et les dossiers que je regarde sont là où ils devraient être. – martyn

Répondre

1

D'après ce que je peux voir tout de suite, les espaces de noms sont faux. Laravel 5 utilise PSR-4, ce qui signifie que chaque espace de noms doit correspondre à la structure de dossier (y compris le fournisseur) d'un fichier de classe.

Ainsi, pour app/Http/Controllers/School/SchoolController.php, l'espace de noms doit être réglé sur:

<?php namespace App\Http\Controllers\School;

pas seulement

<?php namespace School;

En outre, si le nom de l'application est pas par défaut (App), changez-le en conséquence sur l'espace de noms.

À titre d'exemple, si vous exécutiez: php artisan app:name ACME

l'espace de noms doit alors:

<?php namespace ACME\Http\Controllers\School;

Vérifiez d'autres classes comme app/Http/Controllers/Auth/AuthController.php, d'avoir une idée de comment cela devrait être fait.

+0

Non, vous pouvez utiliser composer pour conserver votre structure d'espace de noms. – martyn

+0

Dans ce cas, vous devez également coller la config 'composer.json' appropriée, afin que tout le monde sache exactement ce que vous faites. Sinon, tout se résume à deviner le travail. –