Видео актуально для Symfony 7

Важно. Для работы шаблонизатора Twig может потребоваться установка дополнительного пакета, если он у вас еще не установлен

composer require template

В предыдущих видео мы посмотрели как можно отдавать HTML содержимое в качестве ответа в роуте. 

Ответ мы выдавали с помощью специального класса

use Symfony\Component\HttpFoundation\Response;

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

Для того, чтобы можно было гибко управлять html содержимым, которое будет возвращаться в качестве ответ в роуте, как правило, используют шаблонизатор.

По умолчанию, в Symfony используется шаблонизатор TWIG, но также можно использовать и другие шаблонизаторы, twig идет по умолчанию.

Давайте посмотрим, как можно с помощью шаблонизатора выдать какой-то html ответ.

У нас в проекте есть папка tempates и в ней находятся файлы шаблонов для TWIG. 

Давайте в файле main/index.html создадим какую-нибудь html разметку. Пусть это будет какая-то базовая структура.

<!doctype html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <meta name="viewport"
         content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
   <title>Document</title>
</head>
<body>
тест
</body>
</html>

Задача шаблонизатора, превратить код из этого twig файла в обычную html разметку. 

Для того, чтобы мы эту разметку вернули в контроллере мы должны воспользоваться методом render, который есть в контроллере и указать путь к этому файлу. 

#[Route('/', name: 'app_home')]
public function home(): Response
{
   return $this->render('main/index.html.twig', []);
}

В этот файл можно передавать переменные, но сейчас просто самая простая конструкция, которая вернет html содержимое для нашего роута. 

Если мы обратимся теперь к этому роуту, у нас должна вернуться html разметка из этого шаблона twig.