Шаблонизатор Blade

Структура макета шаблона Blade.

Директива Blade @extends используется, чтобы указать, какой макет дочерний шаблон должен «наследовать».
Шаблоны, расширяющие макет Blade, могут добавлять содержимое в секции макета с помощью директив @section.
Содержимое этих секций будет отображаться в макете с помощью @yield.
В этом примере секция sidebar использует директиву @parent для добавления (а не перезаписи) содержимого к боковой панели макета. Директива @parent будет заменена содержимым макета при визуализации представления.


< !-- resources/views/layouts/app.blade.php -- >
< html >
< head >
    < title >App Name - @yield('title')< /title >
< /head >
< body >
    @section('sidebar')
        This is the master sidebar.
    @show

    < div class="container" >
        @yield('content')
    < /div >
< /body >
< /html >

< !-- resources/views/child.blade.php -- >

@extends('layouts.app')

@section('title', 'Page Title')

@section('sidebar')

@parent

< span class="hljs-tag"><< span class="hljs-name">p< /span >>< /span >This is appended to the master sidebar.< span class="hljs-tag"></< span class="hljs-name">p< /span >>< /span >

@endsection

@section('content')
<p>This is my body content.</p>< /span > 
@endsection

Вы не вошли в аккаунт.


@unless (Auth::check())
    You are not signed in.
@endunless

Директивы @isset и @empty могут использоваться в качестве удобных ярлыков для соответствующих функций PHP:


@isset($records)
    // Переменная $records определена и не равна `null` ...
@endisset

@empty($records)
    // Переменная $records считается «пустой» ...
@endempty

Директивы аутентификации


@auth
    // Пользователь аутентифицирован ...
@endauth

@guest
    // Пользователь не аутентифицирован ...
@endguest

При необходимости вы можете указать охранника аутентификации для проверки при использовании директив @auth и @guest:


@auth('admin')
    // Пользователь аутентифицирован ...
@endauth

@guest('admin')
    // Пользователь не аутентифицирован ...
@endguest

Директивы окружения

Вы можете проверить, запущено ли приложение в эксплуатационном окружении, с помощью директивы @production:


@production
    // Содержимое, отображаемое только в эксплуатационном окружении ...
@endproduction

Или вы можете определить, работает ли приложение в конкретной среде, с помощью директивы @env:


@env('staging')
    // Приложение запущено в «переходном» окружении ...
@endenv

@env(['staging', 'production'])
    // Приложение запущено в «переходном» или «рабочем» окружении ...
@endenv

Директивы секций

Вы можете определить, есть ли в секции наследуемого шаблона содержимое, используя директиву @hasSection:


@hasSection('navigation')
    < div class="pull-right-1" >
        @yield('navigation')
    < / div >
    < div class="clearfix-1" >< / div >
@endif

Вы можете использовать директиву sectionMissing, чтобы определить, что в секции нет содержимого:


@sectionMissing('navigation')
    < div class="pull-right-1" >
        @include('default-navigation')
    < / div >
@endif

Операторы Switch


@switch($i)
    @case(1)
        First case...
        @break

    @case(2)
        Second case...
        @break

    @default
        Default case...
@endswitch

Циклы


@for ($i = 0; $i < 10; $i++)
    The current value is {{ $i }}
@endfor

@foreach ($users as $user)
    < p >This is user {{ $user->id }}< /p >
@endforeach

@forelse ($users as $user)
    < li >{{ $user->name }}< /li >
@empty
    < p >No users< /p >
@endforelse

@while (true)
    < p >I'm looping forever.< /p >
@endwhile

Вы также можете завершить цикл или пропустить текущую итерацию, используя директивы @continue и @break:


@foreach ($users as $user)
    @if ($user->type == 1)
        @continue
    @endif
  • {{ $user->name }}

@if ($user->number == 5) @break @endif @endforeach

Вы также можете включить в объявление директивы условие продолжения или прерывания:


@foreach ($users as $user)
    @continue($user->type == 1)
  • {{ $user->name }}

@break($user->number == 5) @endforeach

Подключение дочерних шаблонов


< div >
    @include('shared.errors')

    < form >
        < !-- Form Contents -- >
    < /form >
< /div >

Включенный шаблон унаследует все данные, доступные в родительском шаблоне, но вы также можете передать массив дополнительных данных, которые должны быть доступны для включенного шаблона:

 @include('view.name', ['status' => 'complete']) 

Шаблонизатор Blade
Пролистать наверх