В предыдущих уроках представление какого-либо действия контроллера представляло собой полноценную HTML страницу, что-то вроде такого:
<!DOCTYPE html>
<html>
<head>
<title>Тайтл страницы</title>
</head>
<body>
Текст страницы
</body>
</html>
Конечно же, верстка реального сайта имеет более сложную структуру, что то типа такого:
<!DOCTYPE html>
<html>
<head>
<title>Тайтл страницы</title>
</head>
<body>
<header>
хедер
</header>
<aside>
сайдбар
</aside>
<main>
контент
</main>
<footer>
футер
</footer>
</body>
</html>
Очевидно, что все страницы нашего сайта будут иметь какие-то общие части: общий хедер сайта, футер, сайдбары, и отличаться будут только содержимым контента и тайтлом страницы.
Было бы удобнее вынести общий макет страницы в отдельный файл и сделать так, чтобы каждое действие контроллера возвращало в качестве представления только содержимое контента сайта, которое затем будет добавляться в нужное место макета сайта.
Подобная возможность уже встроена в шаблонизатор Blade. Сейчас мы с вами ее и разберем в документации Laravel:
По следующей ссылке изучите раздел Наследование шаблонов (до раздела Отображение данных).
Пусть дана вот такая верстка:
<!DOCTYPE html>
<html>
<head>
<title>Тайтл страницы</title>
</head>
<body>
<header>
хедер
</header>
<aside>
сайдбар
</aside>
<main>
контент
</main>
<footer>
футер
</footer>
</body>
</html>
Сделайте данную верстку макетом вашего сайта так, чтобы в тег main загружались представления действий контроллеров.
Сделайте так, чтобы каждое действие отправляло в представление переменную $title, содержащую тайтл страницы. Модифицируйте код предыдущей задачи так, чтобы переданный тайтл попадал в тег title макета сайта.
Сделайте так, чтобы каждое действие отправляло в представление переменную $aside, содержащую дополнительную часть сайдбара. Модифицируйте код предыдущей задачи так, чтобы переданные данные попадали в сайдбар сайта, не удаляя при этом его содержимое, а дописывая переданные данные в конец сайдбара.
Включение подшаблонов
По следующей ссылке изучите раздел Включение подшаблонов (до раздела Отрисовка представлений для коллекций). Решите затем следующие задачи:
Вынесите хедер и футер сайта в отдельные подшаблоны. Разместите их в папке elems. Подключите их к основному макету.