我在使用子文件夹中的控制器进行路由时遇到问题。我已尝试过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');
答案 0 :(得分:0)
问题在于视图中的调用:
更改
<td>{!!Html::linkAction('AdminEventController@show', $event->name, $event->slug)!!}</td>
到
<td>{!!Html::linkAction('Admin\AdminEventController@show', $event->name, $event->slug)!!}</td>
修好了。
Laravel Controller Subfolder routing中的Laravel 5解决方案是正确的。问题不在路径文件或控制器中。
答案 1 :(得分:0)
是如果您的应用程序变得像这样大,那么使用子文件夹构造控制器是有意义的。但它需要更多的努力,而不仅仅是在这里和那里移动文件。让我解释一下这个结构。
例如,我们希望有一个子文件夹app / Http / Controllers / Admin,然后在其中我们有AdminController.php,没关系。我们需要在文件内部做些什么:
更正命名空间 - 指定内部文件夹:
namespace App\Http\Controllers\Admin;
使用Controller - 来自你的内部命名空间Laravel不会“理解”扩展Controller,所以你需要添加它:
use App\Http\Controllers\Controller;
路由 - 指定完整路径 这不再适用了:
Route::get('admin', 'AdminController@index');
这是正确的方法:
Route::get('admin', 'Admin\AdminController@index');
就是这样 - 现在你可以从子文件夹中使用你的控制器了。
参考(测试): http://laraveldaily.com/moving-controllers-to-sub-folders-in-a-correct-way/ 作者:Povilas Korop