In Laravel 4, my controller uses a Blade layout:
class PagesController extends BaseController { protected $layout = 'layouts.master'; }
The master layout has outputs the variable title and then displays a view:
... <title>{{ $title }}</title> ... @yield('content') ....
However, in my controller I only appear to be able to pass variables to the subview, not the layout. For example, an action could be:
public function index() { $this->layout->content = View::make('pages/index', array('title' => 'Home page')); }
This will only pass the $title
variable to the content section of the view. How can I provide that variable to the whole view, or at the very least the master layout?
In addition to template inheritance and displaying data, Blade also provides convenient shortcuts for common PHP control structures, such as conditional statements and loops. These shortcuts provide a very clean, terse way of working with PHP control structures while also remaining familiar to their PHP counterparts.
A templating engine makes writing frontend code easier and helps in reusing the code. All the blade files have a extension of *. blade.
If you're using @extends
in your content layout you can use this:
@extends('master', ['title' => $title])
Note that same as above works with children, like:
@include('views.subView', ['my_variable' => 'my-value'])
Then where variable is passed to, use it like:
<title>{{ $title ?? 'Default Title' }}</title>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With