пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

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

31. Шаблонизатор blade

Шаблоны Blade

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

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

<!-- Stored in 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

@extends('layouts.master')

 

@section('title', 'Заголовок страницы')

 

@section('sidebar')

    @

 

    <p>Этот элемент будет добавлен к главному сайдбару.</p>

@stop

 

@section('content')

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

@stop

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

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

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

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

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

Привет, {{ $name }}.

 

Текущее время эпохи UNIX: {{ time() }}.

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

Иногда вам нужно вывести переменную, которая может быть определена, а может быть нет. Например:

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

Но вам не обязательно писать тернарный оператор, Blade позволяет записать это короче:

{{ $name or 'Default' }}

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

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

@{{ Этот текст не будет обрабатываться шаблонизатором Blade }}

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

Hello, {!! $name !!}.

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

Директива 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)

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

@endforeach

 

@forelse($users as $user)

      <li>{{ $user->name }}</li>

@empty

      <p>No users</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 коде страницы --}}

 


22.06.2017; 19:38
хиты: 139
рейтинг:0
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь