Данная статья документации актуальна только для версии 5.0 и была удалена в версии 5.1.
Шаблоны Blade
Blade — простой, но мощный шаблонизатор, входящий в состав Laravel. В отличии от шаблонов контроллеров, Blade основан на концепции наследования шаблонов и секциях. Все шаблоны Blade должны иметь расширение .blade.php.
xml<!-- Расположен в resources/views/layouts/master.blade.php --> <html> <head> <title>App Name - @yield('title')</title> </head> <body> @section('sidebar') Это - главная боковая панель. @show <div class="container"> @yield('content') </div> </body> </html>
xml@extends('layouts.master') @section('title', 'Page Title') @section('sidebar') @parent <p>Этот элемент будет добавлен к главной боковой панели.</p> @stop @section('content') <p>Это - содержимое страницы.</p> @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, поставив перед текстом символ @:
@{{ Это не будет обработано с помощью Blade }}
Если вы не хотите экранировать данные, используйте такой синтаксис:
Hello, {!! $name !!}.
Внимание: будьте очень осторожны и экранируйте переменные, которые содержат ввод от пользователя. Всегда используйте двойные скобки, чтобы экранировать все HTML-сущности.
Как показывает практика, вместо экранирования только пользовательских переменных безопаснее экранировать весь вывод, делая исключения только в редких случаях — прим. пер.
@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)
<p>Это пользователь {{ $user->id }}</p>
@endforeach
@forelse($users as $user)
<li>{{ $user->name }}</li>
@empty
<p>Нет пользователей</p>
@endforelse
@while (true)
<p>Это будет длиться вечно.</p>
@endwhile
@include('view.name')
Вы также можете передать массив данных во включаемый шаблон:
@include('view.name', ['some' => 'data'])
Для полной перезаписи можно использовать директиву @overwrite:
@extends('list.item.container')
@section('list.item.content')
<p>Это - элемент типа {{ $item->type }}</p>
@overwrite
@lang('language.line')
@choice('language.line', 1)
{{-- Этот комментарий не будет включён в сгенерированный HTML --}}
Комментарии (1)
а как проверить текстовку на сущестование? (из шаблона)
сам разобрался
@if (trans()->has('my_lang_key'))
=\