Может войдёшь?
Черновики Написать статью Профиль

Шаблоны

перевод документация 5.х

  1. 1. Шаблоны Blade
  2. 2. Другие директивы Blade
Этот перевод актуален для англоязычной документации на (ветка 5.0). Опечатка? Выдели и нажми Ctrl+Enter.

Данная статья документации актуальна только для версии 5.0 и была удалена в версии 5.1.

Шаблоны Blade

Blade — простой, но мощный шаблонизатор, входящий в состав Laravel. В отличии от шаблонов контроллеров, Blade основан на концепции наследования шаблонов и секциях. Все шаблоны Blade должны иметь расширение .blade.php.

Создание шаблона Blade

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>

Использование шаблона Blade

xml@extends('layouts.master')

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

@section('sidebar')
  @parent

  <p>Этот элемент будет добавлен к главной боковой панели.</p>
@stop

@section('content')
  <p>Это - содержимое страницы.</p>
@stop

Заметьте, что шаблоны, которые расширяют другой Blade-шаблон с помощью @extends, просто перекрывают его секции. Старое (перекрытое) содержимое может быть выведено директивой @parent, что позволяет добавлять содержимое в такие секции, как боковая панель или «подвал».

Иногда — например, когда вы не уверены, что секция была определена — вам может понадобиться указать значение по умолчанию для директивы @yield. Вы можете передать его вторым аргументом:

PHP
@yield('section''Default Content')

Другие директивы Blade

Вывод переменных

PHP
Hello, {{ $name }}.

The current UNIX timestamp is {{ time() }}.

Вывод переменных после проверки на существование

Иногда вам надо вывести значение переменной, но вы не уверены, задано ли оно. То есть вы хотите сделать так:

PHP
{{ isset($name) ? $name 'Default' }}

Вместо написания тернарного оператора, Blade позволяет вам использовать такое удобное сокращение:

PHP
{{ $name or 'Default' }}

Вывод сырого текста в фигурных скобках

Если вам нужно вывести строку в фигурных скобках, вы можете отменить её обработку с помощью Blade, поставив перед текстом символ @:

PHP
@{{ Это не будет обработано с помощью Blade }}

Если вы не хотите экранировать данные, используйте такой синтаксис:

PHP
Hello, {!! $name !!}.

Внимание: будьте очень осторожны и экранируйте переменные, которые содержат ввод от пользователя. Всегда используйте двойные скобки, чтобы экранировать все HTML-сущности.

Как показывает практика, вместо экранирования только пользовательских переменных безопаснее экранировать весь вывод, делая исключения только в редких случаях — прим. пер.

Директива If

PHP
@if (count($records) === 1)
  
Здесь есть одна запись!
@elseif (
count($records) > 1)
  
Здесь есть много записей!
@else
  
Здесь нет записей!
@endif

@
unless (Auth::check())
  
Вы не вошли в систему.
@
endunless

Циклы

PHP
@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

Включение подшаблонов

PHP
@include('view.name')

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

PHP
@include('view.name', ['some' => 'data'])

Перезапись секций

Для полной перезаписи можно использовать директиву @overwrite:

PHP
@extends('list.item.container')

@
section('list.item.content')
  <
p>Это элемент типа {{ $item->type }}</p>
@
overwrite

Отображение языковых строк

PHP
@lang('language.line')

@
choice('language.line'1)

Комментарии

PHP
{{-- Этот комментарий не будет включён в сгенерированный HTML --}}

Комментарии (1)

GoWebPro

Отображение языковых строк @lang('language.line') @choice('language.line', 1)

а как проверить текстовку на сущестование? (из шаблона)

сам разобрался @if (trans()->has('my_lang_key')) =\

Написать комментарий

Разметка: ? ?

Авторизуйся, чтобы прокомментировать.