@elda
В Twig, параметры можно передавать между шаблонами с помощью функции render()
или include()
.
Функция render()
используется для рендеринга других шаблонов, а функция include()
используется для включения других шаблонов в текущий шаблон.
Для передачи параметров между шаблонами необходимо использовать второй параметр в функциях render()
и include()
. Этот параметр представляет собой массив, содержащий переменные и их значения, которые будут доступны в шаблоне.
Пример:
1 2 3 4 5 6 |
{# app/Resources/views/template1.html.twig #} {% set name = 'John' %} {{ include('template2.html.twig', {'age': 25}) }} {# app/Resources/views/template2.html.twig #} {{ name }} is {{ age }} years old. |
В этом примере мы устанавливаем значение переменной name
в шаблоне template1.html.twig
и передаем значение age
в шаблон template2.html.twig
с помощью функции include()
. В шаблоне template2.html.twig
мы можем использовать обе переменные для вывода текста на экран.
Также можно передавать параметры между шаблонами с помощью контроллеров Symfony, используя метод render()
объекта SymfonyBundleFrameworkBundleControllerAbstractController
. Для этого необходимо передать параметры вторым параметром в метод render()
.
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
// src/Controller/MyController.php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAnnotationRoute; class MyController extends AbstractController { /** * @Route("/my-route") */ public function myAction(): Response { $name = 'John'; $age = 25; return $this->render('my-template.html.twig', [ 'name' => $name, 'age' => $age, ]); } } |
1 2 |
{# app/Resources/views/my-template.html.twig #} {{ name }} is {{ age }} years old. |
В этом примере мы создаем контроллер MyController
и устанавливаем значения переменных name
и age
. Затем мы передаем эти значения в шаблон my-template.html.twig
с помощью метода render()
. В шаблоне my-template.html.twig
мы можем использовать обе переменные для вывода текста на экран.