Categories: Laravel

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.

Recent Posts

Celery Checklist [Python]

Celery ile alakalı "best practice"leri ve faydalı araçları bir araya getiren güzel bir checklist'e denk…

5 yıl ago

JavaScript Dizileri için 13 İpucu

Diziler en temel ve sık kullandığımız araçlardan... Kod yazarken işimizi kolaylaştıracak, daha temiz kod yazmamızı…

5 yıl ago

List & Tuple Mini Test (Python)

listve tuple bilginizi test etmek ister misiniz? realpython.com da keşfettiğim ve Türkçe'ye çevirdiğim mini teste…

5 yıl ago

Bilmeniz Gereken 11 Python Mülakat Sorusu

Rehberlik sağlaması ve bilgi tazelemesi açısından faydalı olduğunu düşündüğüm bir Toptal blog paylaşımınıTürkçe'ye çevirdim.Devamını okuyunBilmeniz…

5 yıl ago

Angular Componentlere Konsol Üzerinden Hızlı Erişim

Angular componentlerine console üzerinden hızlıca erişmek için kullanılan bir teknik. Unutmamak için kendime not düşüyorum.Devamını…

5 yıl ago

Birkaç Güzel JavaScript Sorusu İster Miydiniz?

Geçtiğimiz günlerde keşfettiğim ve oldukça da hoşuma giden repoyu paylaşmak istiyorum: lydiahallie/javascript-questions Genel olarak temel…

5 yıl ago