Публикации - Шаблонизатор blade

Основы использования шаблонизатора blade в Laravel

По умолчанию, laravel работает с шаблонизатором blade. Шаблоны создаются в папке app/views и имеют расширение blade.php. Шаблоны подключаются в экшне через хелпер view(), входящим параметром в который передается имя шаблона без расширения blade.php.

Сперва создадим в папке view папку layouts для хранения базовых шаблонов. В папке layouts создадим файл defaults.blade.php.

Базовый шаблон defaults.blade.php. Листинг 1.1

@include('layouts.header')

 

 

 

 

 

Project name

 

 

 

 

 

--блок ссылок --

 

 

 

 

@yield('content')

 

 

 

© Company 2014

 

 

 

 

 

@include('layouts.footer')

В файлах layouts/header.blade.php и layouts/footer.blade.php находится обычный html-код для шапки и футера сайта. Эти 3 файла – это неизменная часть шаблона.

@yield(‘content’) – вывод переменной content. Саму переменную определим в меняющейся части шаблона.

Меняющуюся часть шаблона вынесем в отдельный файл index.blade.php.

Меняющаяся часть шаблона. Листинг 1.2

@extends('layouts.default')

@section('content')

 

Добро пожаловать на сайт

 

 

Текст на страницу

 

@stop

Если необходимо создать часть кода в шаблоне, которая в последствии будет либо заменена, либо добавлена, то можно воспользоваться дирректировой @show

@show

Объявление переменной с диррективой @show в базовом шаблоне. Листинг 1.3

@section('styles')

 

Далее к данному стилю можно добавить другие стили в файлах подшаблона. В подшаблоне обращаемся к диррективе @parent переменной styles.

Объявление переменной с диррективой @show в базовом шаблоне. Листинг 1.4

@extends('public')

@section('styles')

    @parent

 

@stop

Обратите внимание на @extends в начале кода. В шаблонизаторе blade из контроллера мы обращаемся к подшаблону, а подшаблон с помощью диррективы @extends сам себя вставляет в базовый шаблон public.

Подключение подшаблона index.blade.php осуществляется в экшне контроллера.

Подключение подшаблона index.blade.php. Листинг 1.5

return view('index');

Передача массива в шаблон:

Передача массива в шаблон. Листинг 1.6

$posts = array(1=>’One’, 2=>’Two’);

return view('index', $posts);

Имеется также ещё один способ передачи переменных в шаблон, через метод with():

 Передача переменной в шаблон с помощью метода with. Листинг 1.7

$posts = array(1=>’One’, 2=>’Two’);

return view(‘index’)->with(‘posts’, $posts)

Если вы не уверены в существовании передаваемой переменной, то нужно использовать with(), тогда не будет выводиться ошибка.

И ещё один способ передачи переменных:

Магический метод передачи данных в шаблон. Листинг 1.8

$view = view('greeting')->withName('Victoria');   

Для вывода переменных в шаблоне можно воспользоваться диррективой {{}}

Вывод переменных шаблона. Листинг 1.9

{{$name}} // простой вывод переменной
 {{isset($name)?$name:'Default'}} // вывод либо переменной либо значения по умолчанию.
{{ $name or 'Default' }}// еще один способ вывода значения по умолчанию

Для предотвращения XSS-атак дирректива {{}} экранирует html-тэги. Если всё же необходимо вывести html, то можно воспользоваться другой дирректовой:

 Дирректива {!! !!}. Листинг 1.10

Hello,{!!$name!!}.

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

Вывод элементов массива на экран. Листинг 1.11

@if($posts->count())

@foreach($posts as $post)

    

{{$post }}

 

@endforeach

@endif

Количество комментариев: 0

Для того, чтобы оставить коментарий необходимо зарегистрироваться