【发布时间】:2015-08-15 09:46:00
【问题描述】:
我在路由子文件夹中的控制器时遇到问题。我已经尝试了Laravel Controller Subfolder routing 中提出的解决方案,但我无法让它工作。
文件夹结构
HTTP
Controllers
Admin
AdminControllers
User
UserControllers
BaseController
Admincontrollers 在 'App\HTTP\Controllers\Admin' 命名空间中定义
路由文件
Route::group(['middleware'=> 'admin','prefix' => 'admin'], function() {
Route::get('home', 'AdminHomeController@index');
Route::get('home', 'Admin\AdminHomeController@index');
Route::resource('events', 'AdminEventController');
Route::resource('events', 'Admin\AdminEventController');
Route::get('myevents', 'AdminEventController@myevents');
Route::get('myevents', 'Admin\AdminEventController@myevents');
Route::resource('groups', 'AdminGroupController');
Route::resource('users', 'AdminUserController');
});
这看起来确实很奇怪,但这是让它立即正常工作的唯一方法。 如果我删除
Route::get('myevents', 'Admin\AdminEventController@myevents');
//errormessage Class App\Http\Controllers\AdminEventController does not exist
如果我删除
Route::get('myevents', 'AdminEventController@myevents');
//errormessage Action App\Http\Controllers\AdminEventController@myevents not defined.
如果我将控制器放在控制器命名空间中(不是管理员命名空间) 我还是得到了
//errormessage Class App\Http\Controllers\AdminEventController does not exist
当添加的唯一路由是
Route::resource('events', 'AdminEventController');
【问题讨论】:
-
您是否尝试过完全限定的控制器名称?例如。
Route::get('home', 'App\Http\Controllers\Admin\AdminHomeController@index');我的猜测是 Laravel(或者可能是作曲家自动加载器)试图猜测你指的是什么并且弄错了。 -
这不是诀窍,但新的错误给了我一个想法,现在已经修复了