default layout u iptal edip, controller için de ilgili fonksiyondan return View::make('klasor/layout'); şeklinde çağırırsan hangisini çağırırsan o gelir.
örneğin base.blade.php adında genel bir sayfan olsun, head, header, menülerin footerin var...içeriğin gelmesi gereken yere. @yield('icerik') diyip geç.
ikinci templateni oluştur. login.blade.php ve en üste @extends('base') diye ekle, hemen altına
@section('icerik')
buraya login form gelecek
@stop
satırlarını ekle...
Route::get('login',function(){
return View::make('login');
});
diye çağırdığın da yazdığında base.blade.php dosyası login.blade.php dosyasını include edecek. ve login.blade.php dosyasının içinde @section() @stop arasına yazdıklarını base.blade.php içinde @yield() ile değiştirecek.
bu örneği koda dökersek;
/view/base.blade.php
<html>
<title>taban sayfa</title>
meta....
css...
js...
<body>
header
<br>
menüler
<br>
@yield('icerik')
<br>
footer
</body>
</html>
/view/login.blade.php
@extends('base')
@section('icerik')
buraya login form gelecek
@stop
routes.php
Route::get('login',function(){
return View::make('login');
});
bu kodları çalıştırdığında sen ekrana login.blade yi basıyorsun ama login.blade.php nin kendisini base.blade.php nin içine ekleyip @yield('icerik') e de kendi içeriğini eklediğini göreceksin.
bundan sonra controller de her metodun içinden return View::make('ilgililayout') diyeceksin.
register.
login
recover
işte neyse...
@extends ilgili dosyayı extends edilenin içine ekler,
@section() ... @stop ise arasına yazılanı extends içinde yield de ki belirttiğin adrese gönderir...
mesela taban layoutunda title her sayfada değilşecekse,
<html>
<title>@yield('title')</title> diyerek sayfa başlığını belirtirsin, her controlerin her metoduna return View::make('template')->with('title','metoda göre sayfa başlığı'); şeklinde template çağırırsın
template.blade.php için de @section('title')Bu metodun başlığı@stop dediğin de title değişiklik gösterir
Kolay gelsin.
Not: eksik ve yanlışlarım için kusura bakmayın.