Extending A Layout
When defining a child view, use the Blade @extends
directive to specify which layout the child view should "inherit".
Views which extend a Blade layout may inject content into the layout's
sections using @section
directives. Remember, as seen in the example above, the contents of these sections will be displayed in the layout using @yield
:
<!-- Stored in resources/views/child.blade.php -->
@extends('layouts.app')
@section('title', 'Page Title')
@section('sidebar')
@parent
<p>This is appended to the master sidebar.</p>
@endsection
@section('content')
<p>This is my body content.</p>
@endsection
In this example, the sidebar
section is utilizing the @parent
directive to append (rather than overwriting) content to the layout's sidebar. The @parent
directive will be replaced by the content of the layout when the view is rendered.
The @yield
directive also accepts a default value as its second parameter. This
value will be rendered if the section being yielded is undefined:
@yield('content', View::make('view.name'))
Blade views may be returned from routes using the global view
helper:
Route::get('blade', function () {
return view('child');
});