Что собой представляет Twig шаблон Symfony

Twig шаблон, который мы с вами используем в наших роутах, для того чтобы вывести какой-то ответ для нашего пользователя является не просто обычной HTML разметкой, в него можно вставлять некие конструкции языка программирования, добавлять туда некую условную логику, переменные, циклы и так далее, которые будут позволять нам выполнять какие-то действия. 

Конечно, нужно понимать, что template - это у нас вид в модели MVC, и соответственно, в виде не должно быть какой-то программной логики. И вся та логика, какая будет здесь, в нашем шаблоне, она не должна касаться обработки каких-то данных. Эта логика должна относиться только к выводу этих данных, то есть либо условная логика отобразить что-то, либо не отобразить, либо цикл для вывода этих данных, либо переменные и так далее. Но, какую-то обработку, модификацию этих данных в шаблонизатор twig, конечно, быть не должно. 

Это должно выполняться всё в контроллерах и моделях, сервисах, которые будут всё это обрабатывать. 

Пример передачи переменных в Twig шаблон

Сейчас же я вам хотел показать, как можно передать какую-то переменную из контроллера и отобразить её в нашем шаблонизаторе. 

Для этого мы можем создать некую переменную "тест", допустим, со значением три единицы. И для того чтобы нам её передать, все переменные, которые будут принимать наш шаблонизатор, они передаются вторым аргументом в виде массива. Массива ключей, то есть ключ-значение. В качестве значения значит передаётся значение этой переменной. А это имя переменной, которое будет доступно в twig. 

#[Route('/main', name: 'app_main', methods: ['GET'])]
    public function index(): Response
    {
        $test = '111';
        return $this->render('test.html.twig', [
            'controller_name' => 'MainController',
            'test' => $test
        ]);
    }

Давайте, допустим, добавим здесь ключ "тест", который будет принимать значение переменной "тест". Для того чтобы вывести это в шаблонизатор, я просто воспользуюсь вот такими конструкциями: две открывающие фигурные скобки и две закрывающие фигурные скобки и пишем тот ключ, который мы с вами объявили. 

<p>{{ test }}</p>
{{ controller_name }}

Давайте обновим страницу и видим, что действительно вот у нас вывелось значение этой переменной. Мы можем вывести и вот этот ключ, это просто строка "Main Controller".

Таким образом, мы можем передавать какие-то значения, какие-то переменные из нашего контроллера, из уровня логики программной в уровень шаблонизатора. Соответственно, вы можете передавать здесь и массивы и другие какие-то типы данных.

Подробнее про работу в Twig в этом курсе