Функция render
Функция render вызывается внутри метода
контроллера и возвращает объект Response,
содержащий результат обработки Twig-шаблона.
Первым параметром передаётся путь к шаблону
относительно директории templates.
Вторым параметром передаётся массив переменных,
которые станут доступны внутри шаблона.
Функция доступна в контроллерах, расширяющих
AbstractController.
Синтаксис
$this->render(view, parameters)
Пример
Давайте отрендерим шаблон article/index.html.twig
без передачи переменных:
<?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');
}
}
?>
Содержимое шаблона
templates/article/index.html.twig:
<p>hello</p>
Результат выполнения кода:
<p>hello</p>
Пример
Давайте передадим переменную text из
контроллера в шаблон:
<?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' => 'abcde',
]);
}
}
?>
Содержимое шаблона
templates/article/index.html.twig:
<p>{{ text }}</p>
Результат выполнения кода:
<p>abcde</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('/', name: 'article_index')]
public function index(): Response
{
return $this->render('article/index.html.twig', [
'title' => 'article',
'items' => ['a', 'b', 'c', 'd', 'e'],
]);
}
}
?>
Содержимое шаблона
templates/article/index.html.twig:
<h2>{{ title }}</h2>
<ul>
{% for item in items %}
<li>{{ item }}</li>
{% endfor %}
</ul>
Результат выполнения кода:
<h2>article</h2>
<ul>
<li>a</li>
<li>b</li>
<li>c</li>
<li>d</li>
<li>e</li>
</ul>
Смотрите также
-
функция
controller,
которая рендерит шаблон прямо из Twig -
функция
include,
которая подключает один шаблон внутрь другого -
тег
extends,
который наследует шаблон от базового -
тег
block,
который задаёт переопределяемый блок шаблона