Başlarken;
Laravel Framework üzerinde rehber paylaşmayalı uzun zaman oldu. Aslında yeni bir makale paylaşmayalı uzun bir zaman oldu. Bilgi paylaşmak için edinilir ve biriktirilir evet. Fakat o bilgiyi paylaşmak için vakit bulunamayabiliyor 🙁 Zaman bulabilmişken devam edelim 🙂
Laravel üzerinde kullandığımız View yapısını hatırlayalım. “resoruces/views” dizini içerisinde oluşturulmuş ve derlenmeyi bekleyen “.blade.php” dosyalarımızdı. Bu yapıy tekrar hatırlamak için ” Laravel Rehberi – View Sistemi (Temel Seviye) “ makalemi inceleyebilirsiniz.
Temel Gereksinimler;
- Çalışan bir Laravel Projesi – Laravel Rehberi – Giriş Konusunu İnceleyebilirsiniz…
- Laravel Framework üzerindeki Dosya ve Dizin Yapısı – Laravel Rehberi – Temel Dosya ve Dizin Yapısı Konusunu İnceleyebilirsiniz…
- Laravel Framework üzerinde View Sistemi- Laravel Rehberi – View Sistemi Konusunu İnceleyebilirsiniz…
İzlenecek Yol Haritası;
- Layout Nedir?
- Layout tanımlama.
- Layout kullanarak View üretme.
Layout Nedir?
Her View dosyasını tekrar teker oluşturduğumuzdaki hamallığımızı düşünelim. Elinizde bir HTML tasarımı var ve bu tasarım “Header – Footer – Content – Sidebar” yapılarından oluşsun. Bu tasarıma göre değişken alan “Content” olacaktır. Geriye kalan alanlar neredeyse her sayfada aynıdır. Her View oluşturmada bu alanları tekrar tekrar yazmaya ve düzenlemeye gerek kalmamalı tabi ki de.
“Blade” adını vereceğimiz bu yapı oluşturulmuş bir “.blade.php” dosyasını kullanarak yeni dosyalar üretmekten geçer. Oluşturduğumuz bu temel dosyaya da biz “layout” diyeceğiz. Bu cümle bir şeyler anlatmaya yetersiz kalıyor. Örnekleyelim 🙂
Layout Tanımlama;
“resoruces/views” dizini içerisinde “layout.blade.php” adında bir dosya oluşturalım. İçeriğini de şu şekilde örnekleyelim;
<html>
<head>
<title>Merhaba Dünya - @yield('title')</title>
</head>
<body>
<div class="header">...</div>
<div class="sidebar">...</div>
<div class="content">
@yield('content')
</div>
<div class="footer">...</div>
</body>
</html>
Burada ne yaptık? Temel HTML dökümanımızı tanımladık. “@yield” ile belirttiğimiz alanlar ise view oluştururken bir nevi araya veri girişi yapmamızı sağlayacak.
Layout Kullanarak View Üretme;
“resoruces/views” dizini içerisinde “anasayfa.blade.php” adında bir dosya daha oluşturalım. İçeriğini de şu şekilde örnekleyelim;
@extends('layout')
@section('title', 'Anasayfa')
@section('content')
<p>Merhaba; Ben Layout'dan türeyen bir View dosyayısım.</p>
@endsection
“@extends” fonksiyonu ile hangi “.blade.php” dosyasını kullanacağımızı belirttik ve üreteceğimiz View dosyası artık Extend ettiğimiz dosyadan türemiş oldu. “@yield” ile tanımladığımız alanları hatırlayın. “@section” ile oluşturduğumuz bu alanlara veri girişi yapabiliriz.
Sonuç olarak elde edilen yapı “layout.blade.php” dosyamızdan türemiş bir “anasayfa.blade.php” dosyası oldu. Layout’u bir çerçeye olarak düşünebilirsiniz. Sadece içerisindeki fotoğraf değişir kalıp aynıdır.
Peki ya ben tüm yapıyı parçalamak istersem? Yani “Header – Footer – Sidebar – Content” ayrı dosyalar olsa ve ben bunları tek bir Layout dosyasında birleştirmek istesem? En mükemmel yapılardan birisi olur. Elimizde şu dosyaların olduğunu varsayalım;
/proje_adi
/resources
/views
header.blade.php
footer.blade.php
sidebar.blade.php
layout.blade.php
anasayfa.blade.php
“header.blade.php”, “footer.blade.php”, “sidebar.blade.php” dosyalarını oluşturduğunuzu varsayalım. “layout.blade.php” dosyası şu hali alacaktır.
<html>
<head>
<title>Merhaba Dünya - @yield('title')</title>
</head>
<body>
<div class="header">
@include('header')
</div>
<div class="sidebar">
@include('sidebar')
</div>
<div class="content">
@yield('content')
</div>
<div class="footer">
@include('footer')
</div>
</body>
</html>
“@include” fonksiyonu bulunduğu alana içerisine parametre olarak verilen dosyayı alır. Artık “Header – Footer – Sidebar ” dosyaları üzerinde herhangibir değişiklik yapılırsa “layout.blade.php” dosyasından türeyen tüm View dosyalarında da değişiklik gerçekleşmir olur.
Rehber Kaynakları;
Umarım ki “Laravel Rehberi – Layout ile View Oluşturma” makalesi hoşunuza gitmiştir. Keyifli ve Bol Bug’lu Günler Dilerim 🙂
Yasin Erarslan
Fayda sağladığınız için teşekkürler.
Kardeşim eline emeğine sağlık , teşekkürler çok faydalı oldu.