2015-05-25 8 views
1

Я столкнулся с проблемой в эти дни, когда пытался передать аргументы с моего маршрутизатора на мое промежуточное программное обеспечение, чтобы проверить, имеет ли аутентифицированный пользователь права доступа к этому маршруту. Как передать аргумент из маршрутов в промежуточное ПО?Как передать аргументы от маршрутизатора к промежуточному программному обеспечению в laravel 5?

+0

Это особенность Laravel 5.1, из-за очень скоро :-) –

ответ

1

Я пытался сделать это, и она работает очень хорошо для меня: В моих маршрутов файлов:

Route::group(['prefix' => 'agenda', 'middleware' => 'auth', 'permissions' => 'user.create|user.delete'], function() { 
    //my routes here... 
}); 

и внутри промежуточного слоя:

class AuthMiddleware { 
    private $r; 
    private $guard; 
    public function __construct(Router $r, Guard $g) 
    { 
     $this->r = $r; 
     $this->guard = $g; 
    } 

    /** 
    * Handle an incoming request. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param \Closure $next 
    * @return mixed 
    */ 
    public function handle($request, Closure $next) 
    { 
     $route = $this->r->getCurrentRoute(); 
     $action = $route->getAction(); //$action['permissions'] is the string received from the routes file. 
    } 
+3

Обратите внимание, что Laravel 5.1, который скоро будет выпущен, включает параметры промежуточного программного обеспечения: http://laravel.com/docs/master/middleware#middleware-parameters – lukasgeiter