Bu yazımızda ise Laravele route group yani rota grupları konusuna değineceğiz.
Laravel rota gruplama işlemiyle rotaları belli bir düzen ve hiyerarşi içerisinde gruplamanıza izin verir.
Rota grupları birden fazla rota üzerinde işlem yapmak istediğiniz zaman işimizi kolaylaştırır ve bize fayda sağlar.
Laravelde rota gruplama işleminin temel sözdizimi şu şekildedir;
<?php Route::group([ ], callback);
Basit bir örnek yapacak olursak;
web.php dosyası
<?php use Illuminate\Support\Facades\Route; use App\Http\Controllers\Test; Route::group([], function() { Route::get('/ilk',function() { echo "ilk rota"; }); Route::get('/iki',function() { echo "ikinci rota"; }); Route::get('/uc',function() { echo "üçüncü rota"; }); }); ?>
Yukarıdaki örnekte gördüğünüz gibi 3 tane rotayı aslında tek bir çatı altında topladık. Yani gruplama yaparken tanımladığımız ya da olmasını istediğimiz şeyler altındaki tüm rotaları etkileyecek.
Prefix Tanımlama
Benim en çok kullandığım olay bu rota gruplarında. mesela /test/{slug} adında 50 tane rotamız var. Rota gruplarına prefix olarak bunu tanımlıyoruz ve rota grubu içerisinde ne kadar route tanımlarsak tanımlayalım hepsine prefix eklenmiş olur. Yani kısaca ortak parametrelerde prefix kullanıyoruz.
Bunu da bir örnekle açıklamak istiyorum.
<?php use Illuminate\Support\Facades\Route; use App\Http\Controllers\Test; Route::group(['prefix' => 'kisi'], function() { Route::get('/zafer',function() { echo "Zafer Yıldız"; }); Route::get('/sare',function() { echo "Sarenur Ocaktan"; }); Route::get('/fatih',function() { echo "Fatih Bağcivan"; }); Route::get('/aylin',function() { echo "Aylin Duran"; }); Route::get('/emrullah',function() { echo "Emrullah Tanıma"; }); });
Yukardaki kodu kaydedip çalıştırırsanız rota grupları içerisinde tanımladığınız tüm rotalardan önce kisi önekini getirmeliyiz. Mesela ilk rotamızı /zafer olarak tanımladık. ancak çalışma şekli rota grubundan dolayı kisi/zafer şeklinde olacaktır.
Rotalara Middleware Atama
Bir grup içerisindeki tüm rotalara middleware atamak istediğimiz durumlar olabilir. Bu durumda aşağıdaki gibi bir yapı kullanırız.
<?php Route::middleware(['a', 'b'])->group(function () { Route::get('/', function () { // a ve b middleware burayı etkiler }); Route::get('/zafer/1', function () { // a ve b middleware burayı etkiler. }); });
Subdomain için Rota Oluşturma
Laravel’in güzellikleri gerçekten bitmiyor. Bunu bile düşünmüşler. Subdomainimize yönlendirme yapmak için aşağıdaki yapıyı kullanırız.
<?php Route::domain('{hesap}.example.com')->group(function () { Route::get('kisi/{id}', function ($hesap, $id) { // }); });
Subdomain nedir ?
Alt alan adı, bir ana alan adına bağlı olan alt alanlardır. Genellikle alan adının önüne getirilen nokta ile ayrılırlar.
Örneğin;
bilisim34.net
tr.bilisim34.net
Rota gruplarında Rotalara İsim Tanımlama
Bir önceki yazımda bahsetmiştim. Rotalara isim yoluyla ulaşabiliyorduk. Burada da rotalara isim vermek için aynı yapıyı kullanıyoruz. Route group fonksiyonundan önce yazacağımız ön eki belirtiyoruz.
Web.php dosyamız.
<?php use Illuminate\Support\Facades\Route; use App\Http\Controllers\Test; Route::name('kisi.')->group(function () { Route::get('/zafer', function () { // Route assigned name "admin.users"... })->name('zafer'); }); ?>