110 votes

Routage des sous-dossiers du contrôleur Laravel

Je suis nouveau sur Laravel. Pour essayer de garder mon application organisée, je voudrais placer mes contrôleurs dans des sous-dossiers du dossier contrôleur.

controllers\
---- folder1
---- folder2

J'ai essayé de router vers un contrôleur, mais Laravel ne le trouve pas.

Route::get('/product/dashboard', 'folder1.MakeDashboardController@showDashboard');

Qu'est-ce que je fais de mal ?

8voto

maxagaz Points 409

Dans Laravel 5.6, en supposant que le nom de votre sous-dossier' est Api :

Dans votre contrôleur, vous avez besoin de ces deux lignes :

namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;

Et dans votre fichier de route api.php vous avez besoin :

Route::resource('/myapi', 'Api\MyController');

6voto

Tino Points 1327

Je viens de trouver un moyen de le faire :

Il suffit d'ajouter les chemins dans le fichier /app/start/global.php.

ClassLoader::addDirectories(array(

    app_path().'/commands',
    app_path().'/controllers',
    app_path().'/controllers/product',
    app_path().'/models',
    app_path().'/database/seeds',

));

6voto

Dipen Points 85
php artisan make:controller admin/CategoryController

Voici admin est un sous-répertoire sous app/Http/Controllers et CategoryController est le contrôleur que vous voulez créer dans le répertoire

5voto

TodStoychev Points 75

J'utilise Laravel 4.2. Voici comment je procède :
J'ai une structure de répertoire comme celle-ci :
application
-Contrôleurs
----admin
------AdminController.php

Après avoir créé le contrôleur, j'ai mis dans le composer.json le chemin vers le nouveau répertoire d'administration :

"autoload": {
"classmap": [
"app/commands",
"app/controllers",
"app/controllers/admin",
"app/models",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php"
]
}, 

Ensuite, j'ai lancé

composer dump-autoload

et ensuite

php artisan dump-autoload

Ensuite, dans routes.php, j'ai inclus le contrôleur comme ceci :

Route::controller('admin', 'AdminController');

Et tout fonctionne bien.

5voto

Koushik Das Points 1858

Si vous utilisez Laravel 5.3 ou une version supérieure, il n'est pas nécessaire d'entrer dans une complexité aussi grande que celle décrite dans les autres réponses. Il suffit d'utiliser la commande artisanale par défaut pour générer un nouveau contrôleur. Par exemple, si je veux créer un contrôleur de type User contrôleur en User dossier. Je dois taper

php artisan make:controller User/User

Dans les itinéraires,

Route::get('/dashboard', 'User\User@dashboard');

en faisant juste cela, tout irait bien et maintenant sur localhost/dashboard c'est là que la page réside.

J'espère que cela vous aidera.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X