如何在 Laravel 模块开发中路由到控制器方法?

How to route to a controller method in Laravel Moduler development?

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

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

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

所以 controllerAdmin modules 相关,放在 App/Modules/Admin/Controllers/[=45= 下] 目录。

管理模块相关的所有路由都放在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。

我怎样才能克服这个挑战?

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

尝试:

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

我找到了两种方法。

第一个选项

更改 RouteServiceProvider.php 中的 $ 命名空间

对我来说

private $namespace='\App\Modules';

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

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

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

第二个选项

提供控制器的完整路径。

所以路线是这样的

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