In this tutorial, I will show how to pass parameters in Laravel middleware. You already know that Laravel middleware accepts by default two parameters one is $request and the other is the $next parameter. But we can also pass one or more parameters in Laravel middleware.

Passing Parameters in Middleware Laravel

Additional extra middleware parameters can be passed to the middleware after the $next an argument like: See the below example code to understand:


namespace App\Http\Middleware;
use Closure;
class EnsureUserHasRole
     * Handle the incoming request.
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @param  string  $role
     * @return mixed
    public function handle($request, Closure $next, $role)
        if (! $request->user()->hasRole($role)) {
            // Redirect...
        return $next($request);


Now the Middleware parameters must be specified when defining the route by separating the middleware name and parameters with a : and if Multiple then all the parameters should be delimited by commas:


Route::put('/post/{id}', function ($id) {


Read also: Complete Explanation With Example On Laravel Middleware


Hope it can help you.