Kaynağı: hafiz.dev
Laravel 13.17 versiyonu ile birlikte route metadata özelliği tanıtıldığında, bu değişikliğin amacı hakkında birçok soru ortaya çıktı. Geliştiriciler uzun süredir route’lara veri ekliyordu ama genellikle kötü yöntemlerle yapılıyordu. Bu yazıda, bu özellik ile nelerin mümkün hale geldiği ve hangi sorunları çözdüğü üzerinde durulacak.
Laravel 13.17 ile Gerçekten Ne Geldi?
Bu sürümle birlikte üç yeni yöntem tanıtıldı. Bunlar:
metadata(): Route veya grup için bir veri dizisi ekler:
use App\Http\Controllers\UserController;
use Illuminate\Support\Facades\Route;
Route::get('/users', [UserController::class, ])
->metadata([=> [=> ]]);
getMetadata(): Belirtilen route için metadata okur:
$request->route()->getMetadata(); // 'Users'
$request->route()->getMetadata(, ); $request->route()->getMetadata();
Hatırlanacak Birleştirme Kuralları
Grup metadata, grup içindeki her route’a yayılır. Birleşim aşağıdaki iki kuralı izler:
- İlişkisel diziler birleştirilir ve iç içe gruplar değerleri üst üste ekler.
- Liste ve scalar değerleri miras aldığı şeyi değiştirir.
Bu kuralları anlamak, route metadata’nın en önemli taraflarından biridir.
Daha Önce Nasıl Hile Yapıyorduk?
Önceki yöntemler gerçek maliyetlere sahipti. İşte bu yöntemlerden bazıları:
Action dizisinde özel anahtarlar kullanmak. Route işleminize ek anahtarlar ekleyebilir, ancak bu, grup ve kaynaklar için çalışmazdı.
->defaults() yöntemini suistimal etmek. Bunun için route parametreleri için varsayılan değerler sağlamak gerekiyordu.
Route ismi ile eşleşen yapılandırma haritaları. Route adı ile eşleştirilmiş yapılandırma dosyaları.
Route isimlerine bilgi kodlamak. Yukarıdan aşağıya doğru karmaşaya yol açacak isimlendirmeler.
Route metadata tüm bunları değiştiriyor; çünkü veriler route tanımının kendisinde yaşıyor ve gruplar içinde yayılabiliyor.
Problem 1: Route Düzeyinde SEO Etiketleri için Yapılandırma Haritası Olmadan
Pazarlama sayfalarının belirli başlıklara, meta açıklamalara ve kurallar doğrultusundaki direktiflere ihtiyacı vardır. Route metadata ile bu kurallar, route tanımının kendisine taşınır:
// routes/web.php
Route::metadata([=> [=> ]])
->group(function () {
Route::view(, )
->metadata([=> [=> , => ]]);
Route::view(, )
->metadata([=> [=> ]]);
});
Sonuç
Route metadata, temiz bir yapı sağlarken geliştiricilere birçok fayda sunuyor. Bu özelliği kullanarak Laravel uygulamalarında daha düzenli ve sürdürülebilir bir kod tabanı oluşturulabilir. Kapsamlı bir SEO uyumu sağlamak, feature flag yönetimi gerçekleştirmek ve izin kontrol sistemlerini etkin bir şekilde yönetmek gibi önemli avantajlar sağlıyor.
Başlangıçta tek bir kullanım durumu ile başlamak, örneğin SEO middleware kullanımı, düşük riskli bir giriş noktasıdır. Bu yapı üzerinde kurulumunu sağladıktan sonra, diğer kullanım senaryolarını belirlemek mümkündür. Laravel uygulamanızı geliştirdiğinize emin olun ve bu yeniliklerden yararlanın.
Kaynak: Orijinal Makale