In Laravel 4, my controller uses a Blade layout:
class PagesController extends BaseController {
protected $layout = \
$data['title'] = $this->layout->title = 'The Home Page';
$this->layout->content = View::make('home', $data);
I've done this so far because I needed in both the view and master file. It seems if you don't use $this->layout->title it won't be available in the master layout. Improvements welcome!
It appears as though I can pass variables to the entire layout using attributes on the layout object, for example to solve my problem I was able to do the following:
$this->layout->title = 'Home page';
class PagesController extends BaseController {
protected $layout = 'layouts.master';
public function index()
{
$this->layout->title = "Home page";
$this->layout->content = View::make('pages/index');
}
}
At the Blade Template file, REMEMBER to use @ in front the variable.
...
<title>{{ $title or '' }}</title>
...
@yield('content')
...
You can try:
public function index()
{
return View::make('pages/index', array('title' => 'Home page'));
}
I was able to solve that problem by adding this to my controller method:
$title = 'My Title Here';
View::share('title', $title);
$this->layout->title = 'Home page'; did not work either.