Hoje posto uma solução das diferentes formas de se passar parâmetros com Middleware do Laravel 5.0 e 5.1.x. Precisei migrar um Aplicativo da versão 5.1.x para a versão 5.0, porém existia algumas implementações de Middleware que estava dando problema, pois parece que a forma de passar parâmetro no Laravel 5.0 é de outra forma da 5.1.x.

Irei apresentar 2 formas para passar parâmetros, as 1 forma funciona no Laravel 5.1.x mas não funciona no laravel 5.0 e a outra forma funciona em ambos.

Bom, a primeira forma então que irei apresentar é no laravel 5.1.x e que funciona também no 5.0

Em seu ROUTE você pode passar desta forma: Agrupando ou não.

//Com Group
Route::group(['middleware' => 'SuaClasseMid', 'parametro' => 'parametro1'], function (){
   //Função aqui
});

//Sem Group - Normal
Route::get('/foo/bar', [
    'as'   => 'apelido',
    'uses' => 'ClasseController@funcaoQualquer',
    'middleware' => 'SuaClasseMid',
    'parametro' => ['parametro1', 'parametro2']
]);

//Você agora dentro do Middleware poderá recuperar desta forma

class SuaClasseMid...
public function handle($request, Closure $next)
{
   //Abaixo está seu parametro em array ou string
   $request->route()->getAction()['parametro'];
   return $next($request);
}

Agora vamos apresentar apenas a que funciona no 5.1.x

//Com Group
Route::group(['middleware' => 'SuaClasseMid:parametro'], function (){
   //Função aqui
});

//Sem Group - Normal
Route::get('/foo/bar', [
    'as'   => 'apelido',
    'uses' => 'ClasseController@funcaoQualquer',
    'middleware' => 'SuaClasseMid:parametro'
]);


class SuaClasseMid...
public function handle($request, Closure $next, $role)
{
   //$role = Seu parametro
   return $next($request);
}

Abraços

Quero CompartilharShare on FacebookShare on Google+Tweet about this on TwitterShare on LinkedIn

Comentários

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *