Merhaba Phphocasi.com.tr takipçileri,
Yiğit Serin’den devraldığım Laravel Eğitimi serisini beşininci dersi olan laravel route kullanımını bu yazıda anlatmaya çalışacağım.Umarım sizler için de faydalı olur.
Route kullanımı laravel kurulumundan sonra sistemi öğrenmek için atılacak temel adımdır. Route ile sisteminize gelecek olan istekleri Controller, View gibi bölümlere yönlendir ve istek için çalışacak kod parçacıklarına ulaşırsınız. Bunun için laravel framework yapısını route ile öğrenmeye başlamak uygun olacaktır.
İlk olarak daha önceki derslerde laravel 5.4 ile başlandığı için ben de onunla devam edeceğim. Şu andaki güncel sürüm 5.5 olmasına karşın bu yazıda bahsedeceğim hususlar için 5.5 ile 5.4 arasında hiçbir fark yoktur.
Laravel kurulum dizininde yer alan ‘routes/web.php’ dosyasını açıyoruz.
![laravel route.php yeri](https://www.phphocasi.com.tr2018/01/laravel-route-1024x640.png)
Sıfır kurulum yaptığımızı düşünürsek eğer karşımıza yorum kısmı hariç aşağıdaki kod gelecektir.
Route::get("/", function () { return view("welcome"); });
Bu kod, sitenizin giriş ekranı yani ‘/’ için ‘welcome’ View dosyasının çalışacağını belirtir. Burada yer alan ‘Route::get…’ bölümü ise isteğin geldiği methodu belirtir. Kullanabileceğimiz methodlar;
Route::get($url, $callback); Route::post($url, $callback); Route::put($url, $callback); Route::patch($url, $callback); Route::delete($url, $callback); Route::options($url, $callback);
Burada önemli bir not belirtmekte fayda görüyorum. POST, PUT ve DELETE methodlarını çağırabilmek için CSRF koruması yapmamız gerekli. Buna daha sonraki derslerimizde bahsedeceğim ama bu yazıda ufak bir not olarak belirtmek istedim.
Konumuza dönecek olursak ‘$url’ gelen internet sitenizin adresi, ‘$callback’ ise çalışacak fonksiyonu belirtiyor. İlk örneğimize bakarsak çalışacak ‘$url’ için ‘/’ girilmiş ve ‘$callback’ içinse function ile başlayan bölüm belirtilmiş. Burada fonksiyon ile beraber ‘View‘ çalışması sağlanmış.
Route ile Controller çağırmak için aşağıdaki gibi bir kod gereklidir.
Route::get("kullanici/profil", "UserController@uyeGoster");
Gördüğünüz bile kullanılacak Controller çağırmak için ‘UserController@uyeGoster’ kullanıyoruz. Bu değişkende ilk önce Controller ismi daha sonrada fonksiyonun adı kullanılmalıdır.
Laravel Route İsimlendirme
Laravel route için isimlendirme (Name) kullanımı sistem içerisinde route için link verebilmeyi kolaylaştırmak için yapılır.
Route::get("kullanici/profil", "UserController@uyeGoster")->name("profil");
Yukarıdaki örnekte bu route için isimlendirme kullandık. Bu isimlendirmeyi laravel view içerisinde de şu şekilde kullanıyoruz;
route("profil");
Bu sayede route için gerekli link otomatik olarak oluşturulacaktır.
Laravel Route Gruplandırma
Gruplandırma middleware, namespace, prefix gibi birçok route bağlantısı olan durumlar için uygundur.
Route::namespace("Admin")->group(function () { Route::get("yonetici", "UserController@yoneticiGoster"); });
Yukarıdaki örnekte kullanılacak olan Controller dosyalarının ‘Admin’ klasörü altında olduğunu belirttik. Prefix için de bir örnek verelim.
Route::prefix("admin")->group(function () { Route::get("yoneticiler", "UserController@yoneticiListele"); });
Bu örnekte ise url adresinin ilk bölümünde ‘admin’ gelen bağlantıların yapılacaklarını belirttik. Daha kısa bir açıklama ile buradaki route bilgisine ulaşmak için gelen adresin ‘admin/yoneticiler’ olması gereklidir.
Laravel Route Parametre Kullanımı
Route ile gelen parametreleri yönlendirebiliriz. Bunun için adresten alınabilecek parametreleri belirtmemiz gerekli.
Route::get("yonetici/{id}", "UserController@yoneticiGoster");
Route::get("yonetici/{id?}", "UserController@yoneticiGoster");
Bu kodlar birbirininden tek farkı alttakinde yer alan ‘?’. Önce soru işareti olmayanı açıklayayım. Burada adresimiz ‘/yonetici/1’ olarak gelmelidir. Bu örnekte kullanılan ‘1’ id yerine geçer ve kodun devamında yer alan Controller içerisinde kullanılacak bir parametre olarak gönderilir. İkinci kod parçasında ise soru işareti ile anlattığımız şey parametre olabilir ya da olmayabilir demektir. Yani ilk kod ile ‘yonetici’ adresini çalıştıramayız hata alırız ama ikinci kısım ile hem ‘yonetici’ hem de ‘yonetici/1’ adreslerini çalıştırabiliriz. Bunun en yaygın örneği olarak şu senaryoyu düşünebiliriz. Bir yönetim panelinde kullanıcıları listeleyecek ve bu listeden seçilen kullanıcının detay bilgisini göstereceksiniz. Bunun için laravel route sistemini iki şekilde yapabilirsiniz.
Route::get("kullanici", "UserController@yoneticiGoster"); Route::get("kullanici/{id}", "UserController@yoneticiGoster");
veya
Route::get("kullanici/{id?}", "UserController@yoneticiGoster");
Tabi arada bir satır var gibi görünse de oluşturacağınız sistem büyüdükçe bu kullanımın yararını görebilirsiniz. Unutmamak gerekir ki sistemi temiz kod yani takip edilebilir/anlaşılır yazmak günümüz dünyasında son derece önemlidir.
Phphocasi.com.tr için yazdığım bu ilk eğitimde laravel route için gerekli olacak konulara değindim. Daha fazla detaylı bilgi için laravel dökümanından yararlanabilirsiniz.
Tüm Laravel Derslerimiz için tıklayınız.
Phphocasi.com.tr üzerinden yayınladığım laravel eğitimlerine devam edeceğiz. Yazımız ile ilgili tüm sorularınızı yorum bölümden ulaştırabilirsiniz. Bunun dışındaki diğer sorularınız için sorucevap.phphocasi.com.tr sitesini kullanabilirsiniz.
Umarım sizin için yararlı olmuştur. Okuduğunuz için teşekkürler. Daha fazla kişinin okuması için paylaşmayı unutmayın…
89