Yeni başlayanlar için Laravel

25 %
75 %
Information about Yeni başlayanlar için Laravel

Published on January 5, 2017

Author: CneydTural

Source: slideshare.net

1. Laravel 5.3 The PHP Framework For Web Artisans

2. Laravel Life Cycle ROUTES: Gelen istekleri karşılar ve controller’a gönderir. MODELS : Veritabanını sorgular ve gerekli verileri döndürür. VIEWS : Template Engine ile render edilmiş görünüm sayfalarıdır. CONTROLLERS : Kullanıcı isteklerini idare eder, modellerden veri alır ve görünümlere iletir.

3. Laravel Root / App Öncelikle /app dizinine bir göz atalım. Uygulamamızın ana dizini /app klasörüdür. Uygulama geliştirirken, neredeyse vaktimizin tamamını bu klasör altında geçireceğiz. Console Tüm artisan komutlarını içerir. Http Tüm denetçilerinizi (Controllers), ara katmanlarınızı (Middlewares), gelen isteklerinizi (Requests) ve rotalarınızı içerir. Providers : Tüm uygulama servis sağlayıcılarını içerir. Laravel’in çekirdek hizmetlerinin tamamı servis sağlayıcılar tarafından önyüklenebilir.

4. Laravel Root / App Events Tüm etkinlik sınıflarını içerir. Listeners Etkinlik sınıflarını dinleyen listener sınıflarını içerir. Exceptions Uygulamaki özel durum hatalarını yakalayan sınıfları içerir. Jobs Uygulamanız tarafından sıraya alınan tüm işleri içerir. Policies Uygulamanız için yetkilendirme sınıflarını içerir. Bir kullanıcının bir işlemi gerçekleştirebileceklerini belirlemek için kullanılır. Not: Klasör içerisindeki user.php bir model dosyasıdır. Laravel dizin yapısında model klasörü bulunmamaktadır. Model sınıfları /app dizininin altında oluşturulmaktadır.

5. Laravel Root / Other bootstap Uygulamanın autoloading ve önbellek dosyalarını içerir. config Uygulamanın ayar dosyalarını içerir.

6. Laravel Root / Other database Veritabanı Seeder ve Migration dosyalarını içerir. Örnek Migration

7. Laravel Root / Other public Resimler, CSS, Javascript dosyalarını içerir. resources Görünüm (views) ve dil dosyalarını içerir.

8. Laravel Root / Other Storage Tüm compile edilmiş blade şablonlarını, cache dosyalarını ve log kayıtlarını içerir. tests Test sınıflarını içerir. vendor Uygulamadaki paket bağımlılıklarını içerir.

9. Application Example Örnek bir veri listeleme işlemi yapalım. Uygulamayı ilk kez indiriyorsanız aşağıdaki adımları takip ediniz. 1. git clone https://github.com/laravel/laravel.git 2. cd laravel 3. cp .env.example .env 4. composer install 5. php artisan key:generate

10. Application Example Uygulamayı host ediyoruz. • php artisan serve

11. Application Example Uygulama host edildi. Artık örnek uygulamaya başlayabiliriz.

12. Application Example Terminal’I açıp uygulama dizinine geliyoruz. Artisan komutuyla yeni bir controller oluşturuyoruz. php artisan make:controller ExampleController IDE ile projemizi açıp /app/Http/Controller dizininde ExampleController.php dosyasını göreceksiniz. Hemen düzenlemeye başlıyoruz. Sınıf içerisine index adından yeni bir fonksiyon tanımlayalım.

13. Application Example Peki bunun çıktısını nasıl göreceğiz ? Bunun için hemen /routes/web.php dosyasını açıp rotamızı ilgili sınıfın fonksiyonuna bağlıyoruz. Gelen URL parametresi ile sınıf içerisindeki fonksiyonu bağlıyoruz.

14. Application Example Browser’a gelip hemen kontrol edelim. Gördüğünüz gibi rotamızı ExampleController’ın index fonksiyonuna başarıyla Bağlamış olduk.

15. Application Example Route’da aşağıdaki gibi bir fonksiyonda kullanılabilir ama bu tavsiye edilen bir yöntem değildir. GET yöntemiyle bir istek yapmış olduk. Mevcut yönlendirici yöntemlerini de sıralayalım.

16. Application Example Bazen birden çok HTTP fiiline yanıt veren bir yönlendirme kayıt etmeniz gerekebilir. Bunu match yöntemi kullanarak yapabilirsiniz. Route Parametreleri URL içerisindeki ID’yi yakalamak için yönlendirme parametreleri tanımlayabilirsiniz.

17. Application Example Örneklere devam ediyoruz. DuyuruController içerisinde liste oluşturup bunu view dosyasına göndereceğiz. • Rotamızı belirleyelim. Route::get('/duyurular', 'DuyuruController@liste'); • Terminal üzerinden Controller’ı oluşturalım. Php artisan make:controller DuyuruController • resources/views/ klasörü içerisinde duyurular.blade.php adında bir dosya oluşturalım.

18. Application Example DuyuruController içerisinde aşağıdaki fonksiyonu yazalım. Peki ne yaptık ? $duyurular adında bir dizi oluşturduk. duyurular.blade.php adında ki view dosyasına with ile duyurular değişkenini with ile gönderdik. Laravel, Blade Template Engine’i kullanır ve compile edilebilmesi için view dosyalarının sonuna .blade eklenmelidir. Örneğin; dosyaadi.blade.php ( View’i return ederken yanlızca dosya adı yazılır. Dosya, view dizini içerisinde bir alt klasör içerisinde olduğunda klasoradi.dosyaadi seklinde yazıyoruz.

19. Application Example Şimdi duyurular.blade.php dosyamızı açıp gönderilen değişkeni listeleyelim. Bu bölümde Blade’I anlamaya çalışacağız. Blade içerisinde <?php ?> tagları kullanılabilir fakat tercih edilen bir yöntem değildir. Döngüler @foreach($cogul as tekil) @endforeach Tag <?php tagları yerine çift süslü parantez kullanılır. {{ $var }}

20. Application Example Şimdi browser’da duyurular linkine tıklayalım. http://localhost:8000/duyurular

21. Application Example BLADE TEMPLATE ENGINE Blade, Laravel ile gelen pratik, ancak güçlü şablonlama motorudur. Diğer popüler PHP şablonlu motorların aksine, Blade, view dosyalarında düz PHP kodunu kullanmanızı kısıtlamaz. Aslında, tüm Blade görüntüleri düz PHP kodu halinde derlenir ve değiştirilene kadar önbelleğe alınır, yani Blade uygulamanıza sıfır yük ekler. Blade görünümü dosyaları .blade.php dosya uzantısını kullanır ve genellikle resources / views dizininde saklanır. Layout Kullanımı İlk olarak, bir ”master" sayfa düzenini inceleyeceğiz. Çoğu web uygulaması çeşitli genel sayfalarda aynı genel düzenini koruduğu için, bu düzeni tek bir blade görünümü olarak tanımlamak daha uygundur:

22. Application Example BLADE TEMPLATE ENGINE Master Layout (views/layouts/master.blade.php) Extends Master (views/blog.blade.php)

23. Application Example BLADE TEMPLATE ENGINE Bazen bir değişkeni yazdırmak isterken değişkenin tanımlanmış olduğundan emin olamadığımız durumlarda shorthand if/else yapısını kullanırız. Bunun yerine blade ile aşağıdaki kısayolu kullanabiliriz. Blade bunu üçlü ifade gibi derleyecektir. Varsayılan olarak, XSS saldırılarını önlemek için Blade {{}} ifadeleri otomatik olarak PHP'nin htmlentities işleviyle gönderilir. Verilerinizin çıkmasını istemiyorsanız aşağıdaki sözdizimini kullanabilirsiniz:

24. Application Example BLADE TEMPLATE ENGINE IF/ELSE If ifadelerini @if, @elseif, @else ve @endif yönergelerini kullanarak oluşturabilirsiniz. Bu yönergeler PHP eşdeğerleriyle aynı işlevi görür:

25. Application Example BLADE TEMPLATE ENGINE IF/ELSE If ifadelerini @if, @elseif, @else ve @endif yönergelerini kullanarak oluşturabilirsiniz. Bu yönergeler PHP eşdeğerleriyle aynı işlevi görür: UNLESS Kolaylık sağlamak için, Blade ayrıca bir @unless yönergesi sağlar. (Sonuç false ise)

26. Application Example BLADE TEMPLATE ENGINE LOOP Koşullu ifadelere ek olarak, Blade PHP'nin döngü yapılarıyla çalışmak için basit yönergeler sağlar. Yine, bu yönergelerin her biri PHP eşdeğerleriyle aynı işlev görür:

27. Application Example BLADE TEMPLATE ENGINE Döngüler Döngüler kullanırken, döngüyü de sonlandırabilir veya geçerli yinelemeyi atlayabilirsiniz: Koşulu tek bir satırda da belirtebilirsiniz.

28. Application Example BLADE TEMPLATE ENGINE Loop Değişkeni Döngü yaparken, döngü içinde $loop değişkeni bulunur. Bu değişken, geçerli döngü dizini ve bunun döngü aracılığıyla ilk veya son yineleme olup olmadığı gibi yararlı bazı bilgilere erişilmesini sağlar: İç içe geçmiş bir döngüyseniz, parent özelliğinden döngünün $ loop değişkenine erişebilirsiniz:

29. Application Example BLADE TEMPLATE ENGINE Loop Property $ loop değişkeni ayrıca çeşitli özellikleri de içerir: Geçerli döngü yinelemesi dizini (0'dan başlar). Geçerli döngü yinelemesi dizini (1’den başlar). Döngü döngede kalır. Döngüdeki öğeleri toplar. Döngünün ilk öğesi Döngünün son öğesi Geçerli döngü derinliği Geçerli döngünün bir üst öğesi Comment Satırı PHP Tag

30. Application Example BLADE TEMPLATE ENGINE Include Blade'in @include yönergesi, Blade görünümünü başka bir görünüme dahil etmenizi sağlar. Üst görünümde kullanılabilen tüm değişkenler, birlikte gelen görünüme de aktarılacaktır. Dahil edilen görünüm, üst görünümde mevcut tüm verileri devralacak olsa da, ek bir dizi veriyi dahil edilen görünüme de aktarabilirsiniz: Olabileceği veya olmayabileceği bir görünümü eklemek isterseniz @includeIf yönergesini kullanmalısınız: Blade ile ilgili daha detaylı bilgi için; https://laravel.com/docs/5.3/blade

31. Application Example Şimdi örnek uygulamamıza devam edelim. Öncelikle mysql veritabımızı uygulamaya tanıtalım. Daha sonra blog adında bir tablo oluşturup kayıt oluşturup listeleyelim. 1. Öncelikle uygulamanın rootunda yer alan .env dosyamızı açıyoruz. Mysql bilgilerimizi yazıp kaydediyoruz.

32. Application Example • Tablo oluşturabilmek uygulama içerisinde terminali çalıştırıp aşağıdaki komutu yazıyoruz php artisan make:migration blogs_tablosunu_olustur --create=blogs Bu komut ile birlikte yeni bir migration sınıfı oluşturduk. Veritabanı şemasını oluşturacağız.

33. Application Example Migrasyon sınıfı bağlı fonksiyonlarıyla birlikte oluşturuldu. Şimdi tek yapmamız gereken istediğimiz alanları eklemek! Öncelikle döküman üzerinden veritiplerini inceleyelim. Tüm liste için tıklayın; https://laravel.com/docs/5.3/migrations

34. Application Example Alanlarımızı belirlediğimizi ve döküman üzerinden veri tiplerine göre şemaya eklediğimizi varsayıyorum. Çıktı aşağıdaki gibi olacaktır; Eklediğimiz alanlar; title, description, content, active

35. Application Example Alanları ekledikten sonra tekrar terminal’e gelip aşağıdaki komutu çalıştırıyoruz. php artisan migrate İşlem bu kadar basit artık veritabanımızda belirlediğimiz alanlar ve veri tipleriyle birlikte blogs tablomuz oluşturuldu.

36. Application Example Blog için tablomuzu migrate ettik. Şimdi modelimizi oluşturacağız. Terminal üzerinden aşağıdaki komutu yazalım. php artisan make:model Blog Laravel’de genellikle model isimleri tekil, tablo isimleri ise çoğuldur. Örneğin; Tablo adı “articles”, model adı Article şeklinde. Şimdi /app dizinimizin altına bakalım ve model sınıfımızın oluşup / oluşmadığını kontrol edelim.

37. Application Example Eğer belirttiğimiz gibi model adı tekil, tablo adı çoğul değil ise sınıf içerisinde tablo adını belirtmek zorundayız. Varsayılan olarak Laravel model adına s takısı ekleyip veritabanı içerisinde o tabloyu arar ve modele eşler. Dikkat ettiyseniz model sınıfı Eloquent ORM ‘den extend ediliyor. Peki nedir bu Eloquent ORM ? Laravel ile birlikte gelen Eloquent ORM, veritabanınızla çalışmak için güzel, basit bir ActiveRecord uygulaması sağlar. Her bir veritabanı tablosu, bu tabloyla etkileşimde bulunmak için kullanılan bir "Model" e sahiptir. Modeller tablolardaki verileri sorgulamanın yanı sıra tabloda yeni kayıtlar eklemenize izin verir.

38. Application Example Eloquent ORM’de dilediğiniz veritabanını, sorgularınızı hiç değiştirmeden kullanabilirsiniz. Varsayılan veritabanını ve bilgileri yapılandırmak için /config/database.php dosyasını inceleyebilirsiniz.

39. Application Example • Şimdi örnek uygulamıza geri dönelim ve BlogController’ı oluşturalım. php artisan make:controller BlogController --resource

40. Application Example • Rotalarımızı oluşturalım. (routes/web.php) Eğer dikkat ettiyseniz Route::get, Route::post şeklinde bir kullanım yerine Route::resource şeklinde kullandık. Şimdi terminal’e gelelim ve aşağıdaki komutu yazalım. php artisan route:list Gördüğünüz gibi resource kullandığımız için yönlendirici yöntemlerini uygulama rotalara dahil etti. BlogController oluştururken de –resource ekini kullanmıştık ve bu metotların tümü sınıfımıza eklenmişti.

41. Application Example • Şimdi isterseniz Browser’ı açıp URI’leri test edelim. http://localhost:8000/blog URI’sinin Action’ı; AppHttpControllersBlogController@index Fonksiyon boş olduğu için beyaz bir sayfa ile karşılaştık.

42. Application Example • Şimdi hemen resources/views dizini altına blade dosyalarımızı oluşturalım. Master Page Layout’u oluşturalım. (resources/views/layouts/master.blade.php)

43. Application Example • Create view’i (Yeni Blog Ekleme Sayfası) oluşturalım. (resources/views/blog/create.blade.php)

44. Application Example • Rotayı, view’e bağlayalım. ( BlogController’da create fonksiyonu çalıştığında blog/create.blade.php’yi return eder. )

45. Application Example • Rotayı, view’e bağlayalım. ( BlogController’da create fonksiyonu çalıştığında blog/create.blade.php’yi return eder. ) Form submit edildiğinde store fonksiyonu çalışacak. Bu fonksiyonun içerisine de gelen request’i return ediyoruz.

46. Application Example • Form’den gelen request’i JSON formatında return ettik. Peki formdan gelen request’i veritabanına nasıl kaydedeceğiz ? Oldukça kolay!

47. Application Example • Formu tekrar submit ediyoruz. Formumuz blogs tablosuna kaydedildi. Sizce de oldukça kolay olmadı mı ? 

48. Application Example • Şimdi bloglarımızı listeleyelim. Hemen ilgili alanları düzenliyoruz. BlogController@index fonksiyonu içerisinde; resources/views/blog/index.php içerisinde;

49. Application Example • Hemen browser’a tekrar gelip http://localhost:8000/blog yazalım ve kontrol edelim. Şimdi bu listeye bir de düzenle ikonu ekleyelim ve bu içerikleri nasıl düzenleyebiliyoruz görelim.... Font Awesome’u CDN’den çekelim.

50. Application Example • Listeye ikonlarımızı da ekledik.

51. Application Example • Rota’da belirlediğimiz gibi düzenle ikonuna tıkladığımızda BlogController@edit fonksiyonu çağırılacaktır.

52. Application Example • /resources/views/blog/edit.blade.php’yi düzenliyoruz.

53. Application Example • Form submit edildiğinde BlogController@update fonksiyonu çalışır. Burada da request’i alıp model’e kaydediyoruz.

54. Application Example • Güncelleme tamamlandığında listeye tekrar geri gönderiyoruz. Şimdi bir de liste üzerinde başlığa tıklayarak blog detay sayfasını hazırlayalım. Bunun için BlogController@show methodunu kullanacağınız. İlk önce listedeki başlıkları linklendirelim.

55. Application Example • blog/index.blade.php içerisinde başlıklarımıza detay sayfası için linkler verildi. HTML link çıktısı şu şekilde olacak;

56. Application Example • BlogController@show fonksiyonunu düzenliyoruz; • Birde resources/blog içerisinde show.blade.php dosyasını oluşturup düzenliyoruz. Bunu daha önce oluşturmamıştık.

57. Application Example • Sonucu görelim; http://localhost:8000/blog/3

58. Application Example • Silme için de BlogController@destroy fonksiyonunu kullanacağız. Onu da aşağıdaki şekilde düzenliyoruz. • Destroy form üzerinden submit edilmelidir. Çünkü GET ile request kabul etmez. <form action="{{ route('blog.destroy', ['id' => $blog->id]) }}”> <input name="_method" type="hidden" value=”DELETE"> </form> Link olarak göndermek istiyorsanız GET ile yeni bir rota ve fonksiyon oluşturmalısınız. Route Route::get('blog/delete/{id}', ['as' => 'blog.delete’, 'uses' => 'BlogController@delete']); BlogController Public function delete($id) {}...

59. Teşekkürler Daha detaylı bilgi için Laravel Dökümantasyonunu inceleyebilirsiniz. Cüneyd Tural cuneydtural.com turalcuneyd@gmail.com https://twitter.com/cuneydtural

Add a comment

Related pages

Yeni Başlayanlar İçin Laravel - robocombo.com

Yeni Başlayanlar İçin Laravel (K003) Marka: KODLAB. İndirim Oran ... Laravel'in veya Yeni Bir Projenin Yüklenmesi ...
Read more

YENİ BAŞLAYANLAR İÇİN LARAVEL - Kodlab Yayınları ...

YENİ BAŞLAYANLAR İÇİN LARAVEL. Kategori: PROGRAMLAMA: Marka: Kodlab Yayınlar ...
Read more

Yeni Başlayanlar İçin Laravel & Oku, İzle, Dinle, Öğren ...

Yeni Başlayanlar İçin Laravel & Oku İzle Dinle Öğren!-KODLAB YAYIN- Mehmet Yaşar Onur Laravel veritabanı destekli değişik ekran boyutlar
Read more

Yeni Başlayanlar İçin Laravel (Kitap ve Eğitim Seti)

Yeni Başlayanlar İçin Laravel (Kitap ve Eğitim Seti) ile WEB öğrenmek çok kolay. WEB kitapları burada.
Read more

Yeni Başlayanlar İçin Laravel,Mehmet Yaşar Onur

kitap: Yeni Başlayanlar İçin Laravel,Mehmet Yaşar Onur,Kodlab Yayıncılık,25,2439
Read more

Yeni Başlayanlar İçin Laravel Fiyatı - Taksit Seçenekleri

Yeni Başlayanlar İçin Laravel en iyi fiyatla Hepsiburada'dan satın alın! Şimdi indirimli fiyatla online sipariş verin, ayağınıza gelsin!
Read more

Yeni Başlayanlar İçin Laravel | Kitap, Müzik, DVD, Çok ...

Yeni Başlayanlar İçin Laravel. 10 / 10 - 1 Kişi FAVORİLERİME EKLE. Yazar: Mehmet Yaşar Onur. Yayınevi : Kodlab. TL. TL-%40. SEPETE EKLE FİYATI DÜŞÜNCE UYAR.
Read more

YENİ BAŞLAYANLAR İÇİN LARAVEL - Mehmet ... - KODLAB

YENİ BAŞLAYANLAR İÇİN LARAVEL. OKU, İZLE, DİNLE, ÖĞREN! Mehmet Yaşar ONUR. Kategori: Programlama. ISBN: 978-605-9118-620. Barkod: 9786059118620.
Read more

GitHub - ibrahimhizlioglu/laravel-ornek-uygulama: Laravel ...

laravel-ornek-uygulama - Laravel Framework'e yeni başlayanlar için basit bir soru / cevap uygulaması hazırladım. Bol bol Türkçe yorum satırları ekleyerek ...
Read more