Tüm sayfalarınızda yan bölüm veya ana menü gibi bir bölüm varsa menü öğelerinide veritabanından çekiyor olabilirsiniz. Böyle bi durumda her view::make yaptığınızda sayfaya o kısmı oluşturması için değişken yollamak yerine bir view composer yazarak tek seferde işinizi halledebilirsiniz.
Öncelikle view composerı laravelin auto load ettiği bir dizine bir dosya oluşturup veya filter.php gibi zaten autoload olmuş bir dosyaya yazarak oluşturabileceğiniz gibi isterseniz yeni bir dizin oluşturup bunun autoload olması için gerekli adımları tamamladıktan sonra oraya view composer kodlarınızı yerleştirebilirsiniz. (Bu konuda kesin bir yöntem yoktur. isteğinize göre şekillendirebilirsiniz)
Ben bu basit örneğimde filter.php içerisine yazacağım view composer kodlarımı.
Basit olarak senaryo şu şekilde;
app
-----controllers
------HomeController.php
-----views
-------layout.blade.php
-------index.blade.php
-------digersayfa.blade.php
-------sidebar.blade.php
-----filter.php
-----route.php
layout.blade.php dosyası master template imiz olsun. bunu index.php extends edecek ve layout.blade.php içine sidebar.blade.php uygun yerde include edilecek.
<body>
<div>
@yield('icerik')
</div>
@include('sidebar')
</body>
index.blade.php
@extends('layout')sidebar.blade.php
@section('icerik')
<h1>merhaba dünya</h1>
@stop
{{ $degisken }}
filter.php dosyasının en sonuna ise aşağıdaki gibi kodlarımızı eklediğimizde artık her sayfamıza $degisken e atadığımız değeri gönderecektir.
View::composer('sidebar', function($view){
$degisken = "benim değişkenim";
$view->with('degisken', $degisken);
});
Tabii ki bu mümkün olduğunca anlaşılır olması için bu şekilde yaptım. Burada çeşitli kontroller yaptırabilirsiniz ihtiyacınıza göre kodu şekillendirebilirsiniz.