我正在使用"artem-schander/l5-modular": "dev-master"
进行laravel模块化开发。
例如,我创建一个管理模块。
文件夹结构是App / Modules / Admin。
与 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 default routes.php文件中。
当我浏览时,我收到此错误
Class App\Http\Controllers\AdminController does not exist
据我所知,laravel在其默认路径中查找AdminController。
我如何克服这一挑战?
答案 0 :(得分:1)
如果控制器不在默认路径中,则可以通过完全限定的命名空间访问控制器。
尝试:
Route::resource('admin', '\App\Modules\Admin\Controllers\AdminController');
答案 1 :(得分:0)
我找到了两种方法。
第一个选项
更改 RouteServiceProvider.php 中的 $ namespace 。
对我来说
private $namespace='\App\Modules';
因此对于Admin模块,我可以使用route as
Route::get('/', 'Admin\Controllers\AdminController@index');
我认为改变Laravel的默认值是个坏主意。
第二个选项
提供Controller的完整路径。
所以路线就像这样
Route::get('/','\App\Modules\Admin\Controllers\AdminController@index');