【问题标题】:How to route to a controller method in Laravel Moduler development?如何在 Laravel Moduler 开发中路由到控制器方法?
【发布时间】:2016-05-08 21:20:06
【问题描述】:

我正在使用 "artem-schander/l5-modular": "dev-master" 进行 laravel 模块开发。

例如我创建了一个管理模块。

文件夹结构为 App/Modules/Admin。

所以 controller 相关的 Admin modules 放在 App/Modules/Admin/Controllers/ 目录下。

所有与管理模块相关的路由都放在App/Modules/Admin/routes.php文件中。

这里的样子

Route::group(array('module' => 'Admin', 'middleware' => ['web'],'namespace' => 'App\Modules\Admin\Controllers'), function() {

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

}); 

与管理模块相关的所有视图文件都放在 App/Modules/Admin/Views 文件夹中。

我正在尝试使用此路由访问管理员的索引视图

Route::get('/', 'AdminController@index');

这条路由放在 laravel 默认的 routes.php 文件中。

当我浏览时,我收到此错误

Class App\Http\Controllers\AdminController does not exist

据我了解,laravel 在其默认路径中查找 AdminController。

我该如何克服这个挑战?

【问题讨论】:

    标签: laravel module namespaces laravel-routing


    【解决方案1】:

    我找到了两种方法。

    第一个选项

    更改 RouteServiceProvider.php 中的 $namespace。

    对我来说

    private $namespace='\App\Modules';

    所以对于管理模块我可以使用路由作为

    Route::get('/', 'Admin\Controllers\AdminController@index');
    

    我认为更改 Laravel 的默认值是个坏主意。

    第二个选项

    提供控制器的完整路径。

    所以路线应该是这样的

    Route::get('/','\App\Modules\Admin\Controllers\AdminController@index');
    

    【讨论】:

      【解决方案2】:

      如果控制器不在默认路径中,您可以通过完全限定的命名空间访问控制器。

      试试:

      Route::resource('admin', '\App\Modules\Admin\Controllers\AdminController');
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-12-16
        • 2023-03-27
        • 1970-01-01
        • 1970-01-01
        • 2018-09-16
        • 2014-09-11
        • 2014-09-21
        • 2015-02-04
        相关资源
        最近更新 更多