Секции (section)

В layout можно указывать специальные переменные через параметр @yield('section-name').

<!-- resources/views/layouts/app.blade.php -->

<title>@yield('title')</title>

Задавать значения можно через параметр @section('name').

<!-- resources/views/contacts.blade.php -->
@extends('layouts.app')

@section('title', 'Имя страницы')

В @section можно указывать длинный код.

<!-- Layout -->
<aside>
    @yield('sidebar')
</aside>

<!-- Шаблон страницы -->
@section('sidebar')
    <p>Код для боковой панели</p>
@endsection

Проверить, что секция существует

Проверить секцию на существование можно через параметр @hasSection.

<!-- resources/views/layouts/app.blade.php -->

@hasSection('sidebar')
    <aside>
        @yield('sidebar')
    </aside>
@endif

Заменить или наследовать секцию

В layout можно создать контент, который можно будет заменить на другой странице.

<!-- Layout -->
@section('info')
    <p>Контент, доступный на всех страницах</p>
@show

<!-- Шаблон -->
@section('info')
    <p>Контент для текущей страницы</p>
@endsection

Стоит обратить внимание, что в layout секция заканчивается на @show, а в шаблоне страницы секция заканчивается на @endsection.

Можно не заменить секцию, а добавить в неё свой код. Для этого в шаблоне указывается параметр @parent.

<!-- Шаблон -->
@section('info')
    @parent

    <p>Контент для текущей страницы</p>
@endsection