Laravel 5 Framework Rotalarda Gruplandırma

Merhaba arkadaşlar bu yazımda rotalarda gruplandırma yapmayı göreceğiz. Rotalarda gruplandırma işlemi bize çeşitli nitelikleri tek tek tanımlamak yerine tek seferde tanımlamayı sağlıyor. Örneğin bir Middleware oluşturdunuz ve bunu 7 tane rotada tanımlayacaksınız. Bunu tek tek yapmak zorunda değilsiniz. Gruplandırma yaparak yapabilirsiniz.

Gruplandırma işlemi Rota sınıfı içerisinde group methoduyla birlikte yapılıyor. İlk olarak gruplandırma yapmayı öğrenelim. Örnek bir gruplandırma:

Route::prefix('/')->group(function(){
  Route::get('/', function(){
    return "Deneme";
  });
});

Şimdi burada prefix isimli bir method görüyorsunuz. Bu gruplandırmada ön ek koymayı sağlıyor. Ancak burada sadece anasayfa rotasını gruplandırma örneği için kullandım. Şimdi nitelik tanımlayarak örnek vereceğim.

Middleware tanımlama

<?php

Route::middleware([ 'middleware1', 'middleware2' ])->group(function(){
  Route::get('/', function(){
    return "Deneme";
  });
});

Burada middleware methodu ile grup içerisinde ne kadar rota bulunuyorsa hepsinde bu middleware’lerin kullanmasını istedim.

Namespace tanımlama

<?php

Route::namespace('Admin')->group(function () {
    // Kontroller "App\Http\Controllers\Admin" dizininde bulunmak zorundalar.
  
  Route::get('/list', 'AdminController@getList');
  // Yani burada App\Http\Controllers\Admin klasörü altında bulunan AdminController içerisinden getList methodunu kullan dedik.
});

Burada Admin namespace’ini tanımladık. Buda grup içerisinde bulunan rotalarda tanımlanan Controller’ların hepsinin namespace değerinin başına App\Http\Controllers\Admin eklenecek.

Ön ek ( Prefix ) tanımlama

<?php

Route::prefix('users')->group(function () {
  Route::get('/list', function(){
    return "Deneme";
  });
});

Burada URL parametresinde /list tanımlı olan rotamıza ön ek olarak users ekledik. Bu rotayı çalıştırmak için URL kısmıda users/list yazmamız gerekiyor.

İsimlere ön ek tanımlama

<?php

Route::name('users.')->group(function () {
  Route::get('/list', function(){
    return "Deneme";
  })->name('list');
});

Burada grup içerisinde bulunan rotalara tanımlanan isimlerin önüne users. eklenmesini istedik. Komut isteminde php artisan route:list yaparsak zaten tanımlamış olduğumuz rotaların isimleriyle birlikte detaylı olarak görebiliriz.

Birden fazla nitelik ekleme

<?php

Route::prefix('users')->middleware(['auth'])->name('users.')->group(function () {
  Route::get('/list', function(){
    return "Deneme";
  })->name('list');
});

Ben bu şekilde alıştığım için böyle gruplandırma yapıyorum. Ancak bunları yalnızca group methoduylada yapabiliriz. İlk parametrede dizi olarak tanımlayabiliriz.

<?php

Route::group([
    'prefix' => 'users',
    'name' => 'users.',
    'middleware' => 'auth',
  ], function () {
    Route::get('/list', function(){
      return "Deneme";
    })->name('list');
});

 

 

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir