我目前有booker
和admin
个用户组。 booker
用户被分配到1 event
,而admin
用户未分配给任何活动。
两个用户组都有这样的路由组:
Route::group(['middleware' => 'booker'], function() {
Route::controller('event', 'EventController');
});
Route::group(['middleware' => 'admin'], function() {
Route::controller('admin', 'AdminController');
});
EventController
中的操作是这样的:
getIndex /event
getOverview /event/overview
postOverview /event/overview
getFacilities /event/facilities
postFacilties /event/facilities
etc.
以admin
用户组登录后,我是否可以对此类路由使用EventController
操作:
/admin/events/1
/admin/events/1/overview
/admin/events/1/facilties
/admin/events/1/schedule
etc.
在哪里,我不会从用户那里获取event
个ID,而是从网址获取。
由于
答案 0 :(得分:0)
好的,我设法到达那里,虽然它很乱,所以我仍然想知道是否有更好的解决方案:
路线:
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):
public function __construct()
{
$user = Sentry::getUser();
if($user->hasAccess('admin')) {
$id = Request::segment(3);
$event = Event::find($id);
if(!$event) {
abort(404);
}
} else {
$event = $user->event;
}
$this->data['event'] = $event;
}
public function getIndex()
{
return view('event.index', $this->data);
}
因为您可以看到我必须使用ID段的URL段,因为我无法找到在路径中传递id变量的方法。路由变量只允许我忽略id并加载控制器。
我发现在EventController视图中我无法使用这样的URL:
<a href="{{ URL::action('EventController@getOverview') }}">Overview<a>
// /event/overview
// /admin/events//overview
然而,使用其他助手我可以破解它:
<a href="{{ URL::full().'/overview' }}">Overview<a>
// /event/overview
// /admin/events/3/overview