Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 5 Laravel访问控制器根据用户组使用不同的路由_Laravel 5 - Fatal编程技术网

Laravel 5 Laravel访问控制器根据用户组使用不同的路由

Laravel 5 Laravel访问控制器根据用户组使用不同的路由,laravel-5,Laravel 5,我目前有一个booker和admin用户组。booker用户被分配给1个事件,而管理员用户未被分配给任何事件 两个用户组都有如下路由组: Route::group(['middleware' => 'booker'], function() { Route::controller('event', 'EventController'); }); Route::group(['middleware' => 'admin'], function() { Route

我目前有一个
booker
admin
用户组。
booker
用户被分配给1个
事件
,而
管理员
用户未被分配给任何事件

两个用户组都有如下路由组:

Route::group(['middleware' => 'booker'], function() {

    Route::controller('event', 'EventController');

});

Route::group(['middleware' => 'admin'], function() {

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

});
getIndex      /event
getOverview   /event/overview
postOverview  /event/overview
getFacilities /event/facilities
postFacilties /event/facilities
etc.
/admin/events/1
/admin/events/1/overview
/admin/events/1/facilties
/admin/events/1/schedule
etc.
EventController
中的操作如下:

Route::group(['middleware' => 'booker'], function() {

    Route::controller('event', 'EventController');

});

Route::group(['middleware' => 'admin'], function() {

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

});
getIndex      /event
getOverview   /event/overview
postOverview  /event/overview
getFacilities /event/facilities
postFacilties /event/facilities
etc.
/admin/events/1
/admin/events/1/overview
/admin/events/1/facilties
/admin/events/1/schedule
etc.
当以
admin
用户组的身份登录时,我是否可以使用
EventController
操作执行以下路由:

Route::group(['middleware' => 'booker'], function() {

    Route::controller('event', 'EventController');

});

Route::group(['middleware' => 'admin'], function() {

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

});
getIndex      /event
getOverview   /event/overview
postOverview  /event/overview
getFacilities /event/facilities
postFacilties /event/facilities
etc.
/admin/events/1
/admin/events/1/overview
/admin/events/1/facilties
/admin/events/1/schedule
etc.
其中,我不是从用户那里获取
事件
id,而是从URL获取它


谢谢

好的,我设法到达了那里,虽然那里很乱,所以我还是想知道是否有更好的解决方案:

路线:

Route::group(['middleware' => 'booker'], function() {

    Route::controller('event', 'EventController');

});

Route::group(['middleware' => 'admin'], function() {

    Route::controller('admin/events/{id?}', 'EventController');
    Route::controller('admin', 'AdminController');
    Route::get('event', function() { return redirect('admin'); });

});
在EventController中(使用Sentry):

正如您所看到的,我不得不使用URL段作为id,因为我找不到在路由中传递id变量的方法。route变量只允许我忽略id并加载控制器

我发现我无法在EventController视图中使用这样的URL:

<a href="{{ URL::action('EventController@getOverview') }}">Overview<a>
// /event/overview
// /admin/events//overview
概述
///事件/概述
///admin/events//概述
不过,我可以使用其他助手将其破解:

<a href="{{ URL::full().'/overview' }}">Overview<a>
// /event/overview
// /admin/events/3/overview
概述
///事件/概述
///admin/events/3/概述