Что собой представляет 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".
Таким образом, мы можем передавать какие-то значения, какие-то переменные из нашего контроллера, из уровня логики программной в уровень шаблонизатора. Соответственно, вы можете передавать здесь и массивы и другие какие-то типы данных.
Чтобы оставить сообщение, зарегистрируйтесь/войдите на сайт через:
Email - зарегистрироваться / войти