Видео также применимо для версии Symfony 5.
Итак, мы с вами остановились на том, что наш контроллер возвращает некую HTML разметку.
/** * @Route("/main", name="main") */ public function index() { return new Response("<html><head></head><body>123</body></html>"); }
Это становится возможным благодаря объекту Response, который является экземпляром класса Symfony\Component\HttpFoundation\Response.
Этот объект возвращает нам некую простую HTML-страницу, которая доступна нам по следующему пути (роуту) /main.
Теперь давайте сделаем так, чтобы html-разметку нам возвращал не объект Response, а файл шаблонизатора Twig, который был создан у нас при создании контроллера автоматически.
Давайте раскомментируем этот код и в итоге это будет выглядеть так:
/** * @Route("/main", name="main") */ public function index() { return $this->render('main/index.html.twig'); }
Все файлы шаблонизатора Twig находятся в корневой папке templates. Для нашего контроллера была создана специальная подпапка main и в ней был создан файл index.html.twig.
Давайте удалим в этом файле весь лишний и непонятный код и просто вставим туда базовую разметку HTML-страницы, которую мы выводили в объекте Response.
<html><head></head><body>123</body></html>
По сути, в этом файле будет располагаться обычный html-код. Ничего лишнего здесь нет.
Функцией:
return $this->render('main/index.html.twig');
в контроллере мы просто выводим эту разметку внутри шаблонизатора Twig.
Это становиться возможным благодаря функции render, которая находится внутри AbstractController, который мы расширяем нашим контроллером MainController.
В качестве параметра метода render указывается путь к тому файлу шаблона Twig, который мы с вами подключаем.
В данном случае файл находится в папке main.
Только что мы с вами создали первый файл нашего шаблонизатора. Это обычный html-код и этот код мы соответственно вывели с помощью функции render.
Таким образом это работает.
Чтобы оставить сообщение, зарегистрируйтесь/войдите на сайт через:
Email - зарегистрироваться / войти
Или зарегистрируйтесь через социальные сети: