Passing arguments to a filter - Laravel 4
laravel, laravel-4, php
Solution
`Input::get` can only retrieve `GET` or `POST` (and so on) arguments.
To get route parameters, you have to grab `Route` object in your filter, like this :
Route::filter('agency-auth', function($route) { ... });
And get parameters (in your filter) :
$route->getParameter('agencyId');
(just for fun) In your route
Route::get('{agencyId}', array('as' => 'agency', 'uses' => 'Controllers\Agency\DashboardController@getIndex'));
you can use in the parameters array `'before' => 'YOUR_FILTER'` instead of detailing it in your constructor.
Problem
Is it possible to access route parameters within a filter? e.g. I want to access the $agencyId parameter: ``` Route::group(array('prefix' => 'agency'), function() { # Agency Dashboard Route::get('{agencyId}', array('as' => 'agency', 'uses' => 'Controllers\Agency\DashboardController@getIndex')); }); ``` I want to access this $agencyId parameter within my filter: ``` 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); } }); ``` Just for reference i call this filter in my controller as such: ``` class AgencyController extends AuthorizedController { /** * Initializer. * * @return void */ public function __construct() { // Apply the admin auth filter $this->beforeFilter('agency-auth'); } ... ```