İçeriğe geç →

Laravel Başlangıç Rehberi – 2

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 routeları 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.

Kategori: Laravel

Yorumlar

Siz de düşüncelerinizi paylaşın

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.