Selam,
Nihayet Laravel öğrenmeye gerçekten başlayabilirim. Eğer benimle beraber eğitime devam eden varsa, okumadıysanız serinin ilk yazısını okumanız faydalı olacaktır. İlk yazıda paylaştığım eğitim setindeki (Laravel 4 Beginners) kurulum ayarlarına göre ilerliyorum çünkü. Bugünkü konularım:
- Routing Temelleri
- Route Parametreleri
Ama önce ufak bir uyarı: Laravel varsayılan olarak hataları ayrıntılı bir şekilde paylaşmıyor. Eğer bir hata olursa, ekranda
Whoops, looks like something went wrong.
ifadesinden fazlasını göremezsiniz. Hatayla ilgili daha fazla detaya ulaşmak için yapmamız gereken, app/config/app.php
dosyasını açıp "debug"
değerini true
yapmak.
Routing Temelleri
Route
ya da laravel.gen.tr çevirisiyle rotalar
adından da anlaşılacağı gibi bir rota belirtiyor. Yani web sitemiz için gidilecek yolu (url) ve bu yola ulaşınca yapılması gerekenleri belirliyoruz.
Laravel’in kurulumunu yapıp, anasayfamıza gittiğimizde bizi karşılayan ilk sayfa aslında bir route
ile daha önceden tanımlanmıştır. Bu route
sitenin anasayfasına gelince yapılacaklardan sorumludur. Örneklerle konu daha iyi anlaşılacak.
İlk bilmemiz gereken route
ları app/routes.php
içinde tanımladığımız. routes.php
dosyamıza yakından bakalım:
Route::get('/', function() { return View::make('hello'); });
Yukarıda basit bir route
yapısını görüyoruz. static
tipteki Route
classından get
metodu çağrılmış. Bu metod 2 parametre alıyor. İlk parametre route'
un sorumlu olduğu url
yani yolumuz. İkinci parametre ise bir fonksiyon. Bu fonksiyonun görevi, belirlenen urle ulaşınca yapılacaklar. Yukarıdaki kodda fonksiyonun görevi hello
isimli view dosyasını döndürmek. View dosyaları web sitemizin görüntüsünü yani html kodlarını tuttuğumuz dosyalar. Şimdilik view dosyalarını atlayıp, daha rahat anlamak için kodu kendimize göre düzenliyoruz.
Route::get('/', function() { return "Merhaba!"; });
Şimdi yaptığımız ise "/"
dizinine yani websitemizin ana urline varınca (localhost) ekrana Merhaba!
yazdırmak.
Route ile sitemiz için alt urller de oluşturabiliriz. Şimdi localhost/sozler
adresi için bir route tanımlayalım. Bu route’un görevi ekrana belirlediğimiz bir mesajı yazdırmak olacak.
Route::get("sozler", function() { return "Laravel bahsettikleri kadar öğrenmesi kolay mı?"; } );
İşte bu kadar. localhost/sozler
urline gidince belirlediğimiz mesaj bizi karşılayacak.
İstersek daha fazla alt url oluşturabiliriz. Yapmamız gereken yine route tanımlamak.
Route::get("sozler/mevlana", function() { return "Şu anda localhost/sozler/mevlana adresine vardım!"; } );
Route Parametreleri
Şimdiye kadar oldukça basit olarak Laravel’in route yapısını öğrenmiş oldum. Şimdi route ile kullanacağımız bazı parametreleri öğrenerek devam ediyorum.
Route::get("sozler", function() { return "söz ola kese savaşı söz ola kestire başı"; } ); Route::get("sozler/mevlana", function() { return "Denizde inciler derinde olur. Çerçöp sahilde olur."; } ); Route::get("sozler/asikveysel", function() { return "Güzelliğin on para etmez bu bendeki aşk olmasa"; } ); Route::get("sozler/malcomx", function() { return "Eğitim olmadan, bu dünyada hiçbir yere gitmiyorsun."; } );
Yukarıda localhost/sozler, localhost/sozler/mevlana, localhost/sozler/asikveyse, localhost/sozler/malcomx
için route tanımlamaları yapılmış ve her biri için ayrı bir mesaj belirlenmiş.
Eğer localhost/sozler
altında herhangi bir url tanımlamak istersek şöyle yapabiliriz:
Route::get("sozler/{isim}", function() { return "anonim"; } );
Bu kod ile localhost/sozler
altındaki herhangi bir urlde ekrana anonim yazdırılacak. Yani localhost/sozler/birisi, localhost/sozler/deneme, localhost/sozler/abc
gibi.
İstersek değişkeni fonksiyona argüman olarak gönderebiliriz:
Route::get("milkshakes/", function($aroma) { return "Bütün milkshakeler iyidir."; } ); Route::get("milkshakes/{aroma}", function($aroma) { return $aroma." aromalı milkshake iyidir."; } );
İlk route ile localhost/milkshakes
adresine gelen kullanıcılara “Bütün milkshakeler iyidir
” mesajını görüntülüyoruz.
İkinci route ile localhost/milkshakes
altına gelen değerleri fonksiyona argüman olarak alıp kullanıyoruz. Mesela localhost/milkshakes/muz
için “Muz aromalı milkshake iyidir.
” görüntülenecektir. localhost/milkshakes/cilek
için “Çilek aromalı milkshake iyidir.
” görüntülenir.
Yukarıdaki kodu aslında tek bir route ile de yazabiliriz. Bunun için değişkenimizi opsiyonel yapmamız gerek:
Route::get("milkshakes/{aroma?}", function($aroma = null) { if($aroma == null) { return "Bütün milkshakeler iyidir"; } return $aroma." aromalı milkshakeler iyidir"; } );
Burada “?
” ile milkshake
altına gelecek değişkenin opsiyonel olduğunu bildiriyorum. Ve fonksiyona argüman olarak giderken varsayılan değerini null
olarak belirliyorum. Böylece localhost/milkshakes
adresine gelenler için değişkenin değeri null
olduğundan, ekranda “Bütün milkshakeler iyidir
” yazdırılıyor. Eğer localhost/milkshakes
için alt yol belirtilmişse (localhost/milkshakes/visne) gelen değere göre mesaj düzenlenerek yazdırılıyor. (visne aromalı milkshakeler iyidir.)
Daha somut olması için son bir örnek:
Route::get("makaleler/{makale}", function($makale= null) { if($makale== null) { return "Bütün makaleler listeleniyor..."; } //gönderilen makale veritabanında var mı kontrol et //eğer yoksa hata sayfası döndür //eğer makale mevcutsa aşağıdaki kodu çalıştır return "Şu anda okuduğunuz makale: ".$makale; } );
Yukarıda komut satırları yerine belirtilen kodları yazdığımızı varsayarsak route parametlerini daha iyi anlayabiliriz.
Son olarak birden fazla parametre göndererek bugünkü konuyu bitiriyoruz:
Route::get("milkshakes/{aroma}/sos/{s?}", function($aroma, $s = "sos yok") { return "Milkshake aroması: ".$aroma." ve sos: ".$s; } );
İlk olarak localhost/milkshakes/muz/sos
adresine ulaştığımızı varsayalım. Bu durumda geriye dönen değer: “Milkshake aroması: muz ve sos: sos yok
” olacak çünkü s
için bir değer göndermedim ve varsayılan olarak atadığım “sos yok
” değerini aldı.
localhost/milkshakes/muz/sos/cikolata
için geriye dönen değer: “Milkshake aroması: muz ve sos: cikolata
” olacaktır çünkü bu kez s
için cikolata
değerini gönderiyorum.
Sırada Ne Var?
Bir sonraki eğitim konum views olacak.
- Laravel’in template engineı,
- view dosyalarına veri göndermeyi,
- karar yapılarını ve döngüleri,
- view dosyalarında kalıtım yapmayı
- ve HTMLBuilder’ı
öğreneceğim. Uzun bir yazı olacağını şimdiden belli.
Hatırlatma1: Laravel öğrenmek için bu linkteki eğitimi takip ediyorum ve öğrendiklerimi burada paylaşıyorum. Buraya tıklayarak eğitimin anasayfasına ulaşabilir ve kaynak kodlarını indirebilirsiniz.
Hatırlatma2: Lütfen eksik,hatalı ya da düzeltilmesi gereken bir şey farkederseniz bana bildirin.
Yorumlar