{{TOC}} {{DOCVER 5.0=f6e862ba51a97f2bf9865f35fd5c522c14af93a1 31.07.2015 15:36:24}} .(alert) Данная статья документации актуальна только для версии 5.0 и была удалена в версии 5.1. == ((#blade)) Шаблоны Blade == **Blade** - простой, но мощный шаблонизатор, входящий в состав Laravel. В отличии от шаблонов ((docs/v5/controllers контроллеров)), Blade основан на концепции //наследования шаблонов// и //секциях//. Все шаблоны Blade должны иметь расширение %%(t).blade.php%%. **Создание шаблона Blade** %%(html) App Name - @yield('title') @section('sidebar') Это - главная боковая панель. @show
@yield('content')
%% **Использование шаблона Blade** %%(html) @extends('layouts.master') @section('title', 'Page Title') @section('sidebar') @parent

Этот элемент будет добавлен к главной боковой панели.

@stop @section('content')

Это - содержимое страницы.

@stop %% Заметьте, что шаблоны, которые расширяют другой Blade-шаблон с помощью **@extends**, просто перекрывают его секции. Старое (перекрытое) содержимое может быть выведено директивой **@parent**, что позволяет добавлять содержимое в такие секции, как боковая панель или "подвал". Иногда - например, когда вы не уверены, что секция была определена - вам может понадобиться указать значение по умолчанию для директивы **@yield**. Вы можете передать его вторым аргументом: %% @yield('section', 'Default Content') %% == Другие директивы Blade == **Вывод переменных** %% Hello, {{ $name }}. The current UNIX timestamp is {{ time() }}. %% **Вывод переменных после проверки на существование** Иногда вам надо вывести значение переменной, но вы не уверены, задано ли оно. То есть вы хотите сделать так: %% {{ isset($name) ? $name : 'Default' }} %% Вместо написания тернарного оператора, Blade позволяет вам использовать такое удобное сокращение: %% {{ $name or 'Default' }} %% **Вывод сырого текста в фигурных скобках** Если вам нужно вывести строку в фигурных скобках, вы можете отменить её обработку с помощью Blade, поставив перед текстом символ %%(t)@%%: %% @{{ Это не будет обработано с помощью Blade }} %% Если вы не хотите экранировать данные, используйте такой синтаксис: %% Hello, {!! $name !!}. %% .(alert) **Внимание:** будьте очень осторожны и экранируйте переменные, которые содержат ввод от пользователя. Всегда используйте двойные скобки, чтобы экранировать все HTML-сущности. .(tl_note) Как показывает практика, вместо экранирования только пользовательских переменных безопаснее экранировать весь вывод, делая исключения только в редких случаях - //прим. пер.// **Директива If** %% @if (count($records) === 1) Здесь есть одна запись! @elseif (count($records) > 1) Здесь есть много записей! @else Здесь нет записей! @endif @unless (Auth::check()) Вы не вошли в систему. @endunless %% **Циклы** %% @for ($i = 0; $i < 10; $i++) Текущее значение: {{ $i }} @endfor @foreach ($users as $user)

Это пользователь {{ $user->id }}

@endforeach @forelse($users as $user)
  • {{ $user->name }}
  • @empty

    Нет пользователей

    @endforelse @while (true)

    Это будет длиться вечно.

    @endwhile %% **Включение подшаблонов** %% @include('view.name') %% Вы также можете передать массив данных во включаемый шаблон: %% @include('view.name', ['some' => 'data']) %% **Перезапись секций** Для полной перезаписи можно использовать директиву **@overwrite**: %% @extends('list.item.container') @section('list.item.content')

    Это - элемент типа {{ $item->type }}

    @overwrite %% **Отображение языковых строк** %% @lang('language.line') @choice('language.line', 1) %% **Комментарии** %% {{-- Этот комментарий не будет включён в сгенерированный HTML --}} %%