Метод render
Метод render класса AbstractController
отвечает за рендеринг Twig-шаблона и возвращает
готовый объект Response. Первым параметром
передаётся имя шаблона, вторым - массив параметров,
которые будут доступны внутри шаблона. Третьим
параметром можно передать объект Response
для тонкой настройки ответа.
Синтаксис
$this->render(string $view, array $parameters = [], ?Response $response = null): Response
Пример
Давайте отрендерим простой шаблон и передадим в него переменную:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/', name: 'article_index')]
public function index(): Response
{
return $this->render('article/index.html.twig', [
'text' => 'hello',
]);
}
}
?>
Файл шаблона:
<p>{{ text }}</p>
Результат выполнения кода:
<p>hello</p>
Пример
Давайте передадим в шаблон массив и выведем его элементы:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/list', name: 'article_list')]
public function list(): Response
{
return $this->render('article/list.html.twig', [
'items' => ['article 1', 'article 2', 'article 3'],
]);
}
}
?>
Файл шаблона:
<ul>
{% for item in items %}
<li>{{ item }}</li>
{% endfor %}
</ul>
Результат выполнения кода:
<ul>
<li>article 1</li>
<li>article 2</li>
<li>article 3</li>
</ul>
Смотрите также
-
класс
AbstractController,
который предоставляет базовые методы контроллера -
метод
renderView,
который рендерит шаблон и возвращает его содержимое -
метод
redirectToRoute,
который выполняет перенаправление на маршрут -
метод
json,
который возвращает JSON-ответ