Your middleware is currently set for 3 arguments while using and you are passing only 2 arguments..
Show me your middleware code here and tell me the relationship that you are using for users and roles
Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.
So...I'm using Laravel 12. I know that if you have plain ol' middleware, you can pass a parameter by doing this in your routes:
Route::get('/admin/users', [App\Http\Controllers\UserController::class, 'index'])->name('users.index')->middleware(RoleMiddleware::class . ':Admin');
But what if I have a group, and I call that group "roles"??? According to the docs, I'd do something like this:
Route::get('/admin/users', [App\Http\Controllers\UserController::class, 'index'])->name('users.index')->middleware('roles);
Or even:
Route::middleware(['roles'])->group(function() { // but the docs fail to explain how to translate the above to this }
One person suggested I do this:
Route::middleware(['roles', 'role:Admin'])->get('/admin/users', [App\Http\Controllers\UserController::class, 'index'])->name('users.index');
If I try that suggestion, I get the "Too few arguments" problem (2 passed in, 3 expected)
How do I do this??
Please or to participate in this conversation.