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

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/29309615/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-14 11:14:41  来源:igfitidea点击:

Route to controller in subfolder in Laravel 5

phplaravelcontrollerlaravel-5

提问by Olivier Zoletti

This is my routes.php:

这是我的routes.php:

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

This is my folders:

这是我的文件夹:

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

This is my Controller:

这是我的控制器:

namespace App\Http\Controllers;

class PanelController extends Controller {

/* some code here... */

}

This is what I get:

这就是我得到的:

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

I tried the "composer dump-autoload" command but still not working...

我尝试了“composer dump-autoload”命令,但仍然无法正常工作......

回答by lukasgeiter

The namespace of your class has to match the directory structure. In this case you have to adjust your class and add Panel

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

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

use App\Http\Controllers\Controller;

class PanelController extends Controller {

/* some code here... */

}

回答by alex t

Follow three simple steps

遵循三个简单的步骤

  1. append the folder name in the namespace

    namespace App\Http\Controllers\Panel;
    
  2. Add "use App\Http\Controllers\Controller;" to the controller before the class definition

    namespace App\Http\Controllers\Panel;
    use App\Http\Controllers\Controller;
    
  3. Add the appended folder name when invoking the controller in any route

    Route::get('foo','Panel\PanelController@anyaction');
    
  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');
    

There is no need to run "composer dump-autoload"

无需运行“composer dump-autoload”

回答by Mikhail.root

You can generate a controller with a subfolder as simple as:

您可以生成一个带有子文件夹的控制器,如下所示:

php artisan make:controller Panel\PanelController

It automatically creates proper namespaces and files with directory. And reference it in routes just as mentioned before:

它会自动创建适当的命名空间和带有目录的文件。并在前面提到的路由中引用它:

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

Happy codding!

快乐编码!