【发布时间】:2013-08-17 10:33:54
【问题描述】:
是否可以在过滤器中访问路由参数?
例如我想访问 $agencyId 参数:
Route::group(array('prefix' => 'agency'), function()
{
# Agency Dashboard
Route::get('{agencyId}', array('as' => 'agency', 'uses' => 'Controllers\Agency\DashboardController@getIndex'));
});
我想在我的过滤器中访问这个 $agencyId 参数:
Route::filter('agency-auth', function()
{
// Check if the user is logged in
if ( ! Sentry::check())
{
// Store the current uri in the session
Session::put('loginRedirect', Request::url());
// Redirect to the login page
return Redirect::route('signin');
}
// this clearly does not work..? how do i do this?
$agencyId = Input::get('agencyId');
$agency = Sentry::getGroupProvider()->findById($agencyId);
// Check if the user has access to the admin page
if ( ! Sentry::getUser()->inGroup($agency))
{
// Show the insufficient permissions page
return App::abort(403);
}
});
仅供参考,我在我的控制器中这样称呼这个过滤器:
class AgencyController extends AuthorizedController {
/**
* Initializer.
*
* @return void
*/
public function __construct()
{
// Apply the admin auth filter
$this->beforeFilter('agency-auth');
}
...
【问题讨论】:
-
你可以使用这个
$agencyId=Request::segment(2)在过滤器中获取agencyId