Директивы Blade

Laravel использует по умолчанию мощный движок шаблонов Blade, упрощающий написание представлений (Views). Запомнить всё и навсегда вряд ли возможно, то и дело из головы вылетают названия тех или иных команд или, к примеру директив шаблонизатора. Вашему вниманию директивы шаблонизатора Blade:

@json
@isset
@empty
@guest
@auth
@forelse
@continue
@break
@stack
@push

@json

Декодирует строку json.
Вместо того, чтобы вручную вызывать json_encode($array) в представлениях, можно использовать директиву @json :

@json($array)

К примеру, при использовании Vue.js директива json очень удобна при заполнении компонентов Vue в шаблоне Blade.

<blog-overview-component :blogs='@json($blogs)'>
</blog-overview-component> 

@isset

Проверяет существование переменной.
Традиционный пример проверки существования переменной в Blade:

@if (isset ($post)) 
   //$post определена и не равна null
@endif

с помощью директивы @isset коды выглядит немного более читаемым:

@isset ($post) 
   //$post определена и не равна null
@endisset

@empty

Проверяет пуста ли переменная.

//Следующий код
@if (empty($post))
    //$post пустой
@endif

//Можно записать так:
@empty($post)
    //$post пустой
@endempty

@guest и @uath

Проверяет аутентифицирован ли пользователь @auth или же нет @guest

@guest
//Пользователь не осуществил вход
@endguest

@auth
    // Пользователь осуществил вход
@endauth

@forelse

Директива @forelse — это цикл foreach совмещенный с директивой empty. Посмотрите на пример:

@if ($posts->count())
  @foreach ($posts as $post)
    <li>{{ $post->title }}</li>
  @endforeach
@else
  <p>Нет записей.</p>
@endif

А теперь сравните тоже самое но с @forelse

@forelse ($posts as $post)
    <li>{{ $post->title }}</li>
@empty
    <p>Нет записей.</p>
@endforelse

@continue и @break

Позволяют продолжить @continue или прервать @break цикл в Blade.

@foreach ($posts as $post)
    @if (!$post->is_validated)
        @continue
    @endif
    <li>{{ $post->title }}</li>
    @if ($post->is_last)
        @break
    @endif
@endforeach

Теперь с использованием @continue и @break

@foreach ($posts as $post)
    @continue(!$post->is_validated)
    <li>{{ $post->title }}</li>
    @break($post->is_last)
@endforeach

@stack и @push

Директива @stack обозначает место, где будет отображено содержимое переданное с помощью директивы @push именно в том месте, где размещена директива @stack. Часто используется для включения Javascript и CSS файлов.

Например, в одном из представлении нашего блога мы можем включить файл Javascript, который необходим для используемого компонента только на этой странице. Мы можем сделать это, поместив директиву @stack в раздел подключения скриптов, обычно в секции :

<head>
    <!-- Основные скрипты используемые на каждой странице -->>
    <script src="{{ asset('vendors/jquery/dist/jquery.min.js') }}"></script>
    <script src="{{ asset('vendors/popper.js/dist/umd/popper.js') }}"></script>

    <!-- Наша директива -->
    @stack('scripts')
</head>

Теперь в шаблоне представления нашей особенной страницы мы можем добавить в секцию head подключение необходимого нам скрипта, который пропишется только именно на этой странице, например скрипт всплывающих подсказок:

@push('scripts')
   <script src="{{ URL::asset('vendors/popper.js/dist/umd/popper.js') }}"></script>
@endpush