Как передать параметры между шаблонами twig?

Пользователь

от elda , в категории: PHP , год назад

Как передать параметры между шаблонами twig?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от francis_schuster , год назад

@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 мы можем использовать обе переменные для вывода текста на экран.