
Изучите основы синтаксиса и системы шаблонов Blade. Система шаблонов Blade в Laravel — это один из способов, с помощью которого PHP-фреймворк Laravel облегчает жизнь разработчика.
Синтаксис Blade чист и прост, но легко справляется с наследованием вложенных шаблонов и сложными условиями. А поскольку синтаксис Blade компилируется в PHP-код и затем кэшируется, он обеспечивает более высокую производительность веб-сервера, чем использование стандартного PHP.
Требования
- Облачный сервер с установленными Laravel и PHP 7.0+.
Чтобы установить Laravel, следуйте инструкциям в нашей статье «Установка Laravel PHP Framework на Ubuntu 16.04».
Создайте новый проект
Подключитесь к серверу с помощью SSH, затем войдите под своим пользователем Laravel. Перейдите в ваш веб-каталог:
cd /var/www/html
Создайте новый проект basic-site:
laravel new basic-site
Это создаст директорию проекта basic-site и создаст все стандартные компоненты и поддиректории Laravel.
Перейдите в каталог проекта:
cd basic-site
Необходимо сделать еще один шаг, прежде чем вы сможете просматривать проект в браузере. Право собственности на каталог basic-site/storage должно быть изменено на веб-пользователя сервера:
sudo chown -R www-data:www-data storage
Построение базовой файловой структуры
Шаблоны лезвий находятся в папке resources/views. Мы создадим набор каталогов для организации наших новых шаблонов Blade. Структура файлов будет следующей:
- resources
-- views
--- includes
------- header.blade.php
------- footer.blade.php
--- layouts
------- default.blade.php
--- pages
------- home.blade.php
У этого проекта будет один главный файл макета, который будет вызывать два включаемых файла: верхний и нижний колонтитулы. Главная страница будет иметь все содержимое и будет использовать главный файл макета.
Создайте необходимые каталоги с помощью команд:
mkdir resources/views/layouts
mkdir resources/views/pages
mkdir resources/views/includes
Создать файлы
Далее мы создадим файлы примеров. Каждый файл Blade должен соответствовать соглашению об именовании [имя файла].blade.php и должен быть расположен в каталоге resources/views проекта Laravel.
Шаблон по умолчанию
Создайте файл default.blade.php:
nano resources/views/layouts/default.blade.php
Это будет файл шаблона по умолчанию. Поместите в этот файл следующее содержимое:
<html>
<head>
@include('includes.header')
</head>
<body>
@yield('content')
@include('includes.footer')
</body>
</html>
Сохраните и выйдите из файла.
Следует отметить два элемента синтаксиса Blade:
- @include берет информацию из файлов в каталоге includes.
- @yield берет информацию из раздела content главной страницы.
Заголовок
Создайте файл header.blade.php:
nano resources/views/includes/header.blade.php
Это будет включаемый файл заголовка. Поместите в этот файл следующее содержимое:
<title>My Laravel Example Site</title>
<meta name="description" content="An example site for learning Laravel.">
Сохраните и выйдите из файла.
Нижний колонтитул
Создайте файл footer.blade.php:
nano resources/views/includes/footer.blade.php
Это будет включенный файл нижнего колонтитула. Поместите в этот файл следующее содержимое:
<p>This is the included footer.</p>
Сохраните и выйдите из файла.
Главная страница
Создайте файл home.blade.php:
nano resources/views/pages/home.blade.php
Это будет наша главная страница. Поместите в этот файл следующее содержимое:
@extends('layouts.default')
@section('content')
Hello, world! Welcome to the home page.
@endsection
Сохраните и выйдите из файла.
Несколько замечаний по синтаксису Blade:
- @extends говорит Laravel, что содержимое этого файла расширяет другое представление. Он также определяет вид, который он расширяет, как наш шаблон по умолчанию: resources/views/layouts/default.blade.php.
- @section определяет начало секции, которую мы назвали content. Все, что содержится в этой секции, будет отображаться в @yield, который мы определили в шаблоне.
- @endsection закрывает этот раздел. @section и @endsection — это термины, которые должны использоваться парами, как и другие теги HTML (например, <div> и </div>).
Создание маршрута
Поскольку мы будем использовать только базовые макеты Blade, все, что нам нужно сделать, это создать простой маршрут, который загружает одно представление. Нет необходимости создавать что-то более сложное (например, контроллер).
Откройте для редактирования файл routes/web.php:
nano routes/web.php
Найдите раздел, который гласит:
Route::get('/', function () {
return view('welcome');
});
Замените это на:
Route::get('/', function () {
return view('pages/home');
});
Сохраните и выйдите из файла.
Этот маршрут принимает запросы к главной публичной директории (/) и направляет эти запросы к файлу home.blade.php в директории pages.
Теперь, когда вы закончили создание маршрута, вы можете просмотреть результаты в браузере, добавив /basic-site/public в конец вашего домена (например, http://example.com/basic-site/public).