在Laravel 5中路由到子文件夹中的控制器

时间:2015-03-27 20:25:28

标签: php laravel controller laravel-5

这是我的routes.php:

Route::get('/', 'Panel\PanelController@index');

这是我的文件夹:

Http/
....Controllers/
................Panel/
....................../PanelController.php

这是我的控制器:

namespace App\Http\Controllers;

class PanelController extends Controller {

/* some code here... */

}

这就是我得到的:

Class App\Http\Controllers\Panel\PanelController does not exist

我试过" composer dump-autoload"命令,但仍然没有工作......

3 个答案:

答案 0 :(得分:20)

您的类的命名空间必须与目录结构匹配。在这种情况下,您必须调整您的课程并添加Panel

namespace App\Http\Controllers\Panel;
//                             ^^^^^

use App\Http\Controllers\Controller;

class PanelController extends Controller {

/* some code here... */

}

答案 1 :(得分:7)

遵循三个简单的步骤

  1. 在命名空间

    中附加文件夹名称
    namespace App\Http\Controllers\Panel;
    
  2. 添加"使用App \ Http \ Controllers \ Controller;"在类定义之前到控制器

    namespace App\Http\Controllers\Panel;
    use App\Http\Controllers\Controller;
    
  3. 在任何路径中调用控制器时添加附加的文件夹名称

    Route::get('foo','Panel\PanelController@anyaction');
    
  4. 无需运行" composer dump-autoload"

答案 2 :(得分:1)

您可以使用子文件夹生成一个简单的控制器:

php artisan make:controller Panel\PanelController

它会自动使用目录创建适当的名称空间和文件。 并像之前提到的那样在路线中引用它:

Route::get('/some','Panel\PanelControllder@yourAction');

快乐的编码!