ariferzin Grup, tekil ya da iç içe kullanabilirsiniz. İhtiyacınıza göre seçeceksiniz. Eğer tüm rotalardan önce çalışacak bir middleware varsa grup kullanacaksınız. Ha tek tek her rotaya aynı middleware'i yazabilir misiniz? Evet, bu grup olanı uzun yoldan yapmak demek ama. Birçok yoldan şekillendirmek mümkün:
Route::middleware([MyMiddleware::class, 'auth', 'role:admin,editor'])->group(function() {
Route::resource('users', UserController::class)
->middleware(NeedsActiveCompany::class);
Route::middleware([NeedsBalance::class, ShouldNotBeBanned::class])->group(function() {
Route::get('invoices', [InvoiceController::class, 'index'])
->withoutMiddleware(MyMiddleware::class);
Route::get('transactions', [TransactionController::class, 'index'])
->middleware([
OnlyAdmins::class,
'check: something, another'
]);
})
})
Eğer controller kısmına bakarsanız controller içinde de middleware kullanma şansınız var. Doğal olarak rota için kullandıklarınız öncelikli:
https://laravel.com/docs/8.x/controllers#controller-middleware
ariferzin Yani app.php tetiklendiğinde değil eğer rota bu middleware grubu içinde tanımlıysa kontrole giriyor.
Öyle diyebilirsiniz.
Laravel'deki eski App::before()
da aslında Request ile ilgiliydi. Şimdi de App içinde bu şekilde bazı after before işlemleri var, App::beforeResolving()
gibi, ama bunlar Request ile ilgili değil Application ile ilgili. İkisini karıştırmamak lazım.