По умолчанию, 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 |
|
Вывод всех элементов массива на экран
Вывод элементов массива на экран. Листинг 1.11 |
@if($posts->count()) @foreach($posts as $post)
{{$post }}
@endforeach @endif |