РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
158 of 1361 menu

Метод renderView

Метод renderView принадлежит классу AbstractController и выполняет рендеринг Twig-шаблона, возвращая результат в виде строки. В отличие от метода render, который возвращает объект Response, данный метод возвращает готовый HTML-код. Первым параметром передаётся имя шаблона, вторым - массив переменных для передачи в шаблон.

Синтаксис

$this->renderView(string $view, array $parameters = [])

Пример

Давайте отрендерим простой шаблон и вернём его содержимое в виде строки через Response:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/', name: 'article_index')] public function index(): Response { $html = $this->renderView('article/index.html.twig'); return new Response($html); } } ?>

Содержимое шаблона templates/article/index.html.twig:

<p>hello</p>

Результат выполнения кода:

<p>hello</p>

Пример

Давайте передадим переменные в шаблон через второй параметр метода:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/user/{name}', name: 'article_user')] public function user(string $name): Response { $html = $this->renderView('article/user.html.twig', [ 'name' => $name, 'title' => 'User page', ]); return new Response($html); } } ?>

Содержимое шаблона templates/article/user.html.twig:

<h1>{{ title }}</h1> <p>{{ name }}</p>

Результат выполнения кода для адреса /user/abcde:

<h1>User page</h1> <p>abcde</p>

Пример

Давайте используем renderView внутри метода для сохранения HTML в файл через file_put_contents:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/save', name: 'article_save')] public function save(): Response { $html = $this->renderView('article/index.html.twig', [ 'text' => 'article', ]); file_put_contents('/tmp/page.html', $html); return new Response('saved'); } } ?>

Результат выполнения кода:

saved

Смотрите также

  • класс AbstractController,
    который предоставляет базовые методы контроллера
  • метод render,
    который возвращает объект Response с отрендеренным шаблоном
  • метод forward,
    который перенаправляет запрос другому контроллеру
  • метод json,
    который возвращает JSON-ответ
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить