Laravel控制器子文件夹路由

我是Laravel的新手。 要尝试保持我的应用程序组织,我想把我的控制器到控制器文件夹的子文件夹。

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

我试图路由到一个控制器,但laravel没有find它。

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

我究竟做错了什么?

上面的Laravel 5.3

 php artisan make:controller test\TestController 

这将创buildtesting文件夹,如果它不存在然后创buildTestController里面。

TestController看起来像这样

 <?php namespace App\Http\Controllers\test; use Illuminate\Http\Request; use App\Http\Controllers\Controller; class TestController extends Controller { public function getTest() { return "Yes"; } } ?> 

在路线上,

 Route::get('/test','test\TestController@getTest'); 

在你的文件夹中添加你的控制器

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

创build您的路线不指定文件夹:

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

 composer dump-autoload 

然后再试一次

对于那些使用Laravel 5的人,你需要在子目录中设置控制器的命名空间(Laravel 5仍在开发中,每天都在进行更改)

要得到如下的文件夹结构:

 Http ----Controllers ----Admin PostsController.php PostsController.php 

命名空间Admin \ PostsController.php文件就像这样:

 <?php namespace App\Http\Controller\Admin; use App\Http\Controllers\Controller; class PostsController extends Controller { //business logic here } 

那么你的路线是:

 $router->get('/', 'Admin\PostsController@index'); 

最后,不要做composer php或工匠转储

 composer dump-autoload 

要么

 php artisan dump 

1.创build你的子文件夹,如下所示:

 app ----controllers --------admin --------home 

2.在app / routes.php中configuration你的代码

 <?php // index Route::get('/', 'Home\HomeController@index'); // admin/test Route::group( array('prefix' => 'admin'), function() { Route::get('test', 'Admin\IndexController@index'); } ); ?> 

3.在app / controllers / admin / IndexController.php中写入,例如:

 <?php namespace Admin; class IndexController extends \BaseController { public function index() { return "admin.home"; } } ?> 

访问你的网站,例如:localhost / admin / test你会在页面上看到“admin.home”

ps:请忽略我可怜的英语

只是find了一个方法如何做到这一点:

只需将path添加到/app/start/global.php

 ClassLoader::addDirectories(array( app_path().'/commands', app_path().'/controllers', app_path().'/controllers/product', app_path().'/models', app_path().'/database/seeds', )); 

我正在使用Laravel 4.2。 我在这里怎么做:
我有一个这样的目录结构:
应用
–controllers
—-pipe理
—— AdminController.php

在创build控制器之后,我把composer.json放到了新的admin目录中:

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

接下来我跑了

 composer dump-autoload 

接着

 php artisan dump-autoload 

然后在routes.php我有这样的控制器:

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

一切正常。

对于** Laravel 5或Laravel 5.1 LTS都是**,如果您在Admin文件夹中有多个控制器,则Route::group将对您非常有用。 例如:

我的文件夹结构:

 Http ----Controllers ----Api ----V1 PostsApiController.php CommentsApiController.php PostsController.php 

PostAPIController:

 <?php namespace App\Http\Controllers\Api\V1; use App\Http\Requests; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class PostApiController extends Controller { ... 

在My Route.php中,我将namespace组设置为Api\V1并且总体看起来如下所示:

 Route::group( [ 'namespace' => 'Api\V1', 'prefix' => 'v1', ], function(){ Route::get('posts', ['uses'=>'PostsApiController@index']); Route::get('posts/{id}', ['uses'=>'PostssAPIController@show']); }); 

对于移动细节创build子文件夹访问下面的链接: https : //laracasts.com/discuss/channels/general-discussion/reflectionexception-class-apphttpcontrollersadminadmincontroller-does-not-exist

 php artisan make:controller admin/CategoryController 

这里的pipe理员是app / Http / Controllers下的子目录,CategoryController是你想在目录下创build的控制器

如果您使用的是Laravel 5.3或更高版本,则不需要像其他答案所述那样陷入如此复杂的程度。 只需使用默认的artisan命令来生成一个新的控制器。 例如,如果我想在User文件夹中创build一个User控制器。 我会打字

 php artisan make:controller User/User 

在路线上,

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

这样做会很好,现在在本地主机/仪表板是页面所在的地方。

希望这可以帮助。

我认为要保持Admin和Front的控制器在单独的文件夹中,名称空间将工作正常。

请看下面的Laravel目录结构,对我来说工作正常。

 app --Http ----Controllers ------Admin --------DashboardController.php ------Front --------HomeController.php 

“routes / web.php”文件中的路由如下

 /* All the Front-end controllers routes will work under Front namespace */ Route::group(['namespace' => 'Front'], function () { Route::get('/home', 'HomeController@index'); }); 

而对于pipe理部分,它会看起来像

 /* All the admin routes will go under Admin namespace */ /* All the admin routes will required authentication, so an middleware auth also applied in admin namespace */ Route::group(['namespace' => 'Admin'], function () { Route::group(['middleware' => ['auth']], function() { Route::get('/', ['as' => 'home', 'uses' => 'DashboardController@index']); }); }); 

希望这可以帮助!!