Я пытаюсь найти способ расширения известного блока ветви в прослушивателе событий/подписчике.Symfony2 Extend Twig Block в прослушивателе событий
Код очень простой.
Главная веточка:
<!doctype html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>Hello World</title>
</head>
<body>
{% block body %}{% endblock %}
{% block javascripts %}{% endblock %}
</body>
</html>
Как вы можете видеть, что это просто обычный HTML с 2-х блоков: тело и JavaScripts.
Теперь, например, у меня есть прослушиватель событий onKernelResponse. Я хочу здесь, чтобы добавить новый javascript в блок «javascripts» с расширением «twends».
Код может быть что-то вроде:
public function onKernelResponse(FilterResponseEvent $event)
{
if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) {
return;
}
$response = $event->getResponse();
//complete guesswork code to illustrate what I'm trying to achieve
$content = $this->twig->extend(//extend() function is imaginary
$response, //pass in current response
'AcmeBundle:Javascript:index.html.twig',
);
$response->setContent($content);
}
$ this-> twig-> простираться должны работать как $ this-> twig-> рендер, но вместо того, чтобы вынести что-то новое, расширить() следует возьмите $ response и расширьте его с помощью «AcmeBundle: Javascript: index.html.twig», где я могу добавить больше контента в блок «javascripts».
Вот пример «AcmeBundle: Javascript: index.html.twig»:
{% block javascripts %}
{{ parent() }}
<script>
var something = "new";
</script>
{% endblock %}
В основном я искал способ программно расширить прут блок в обработчиках событий.
Спасибо за помощь заранее.
Спасибо за быстрый ответ nifr. Что делать, если у нас есть несколько прослушивателей событий для добавления нескольких кодов в блок? – Vincent
зарегистрировать переменную массива, если она еще не существует, добавить в нее элементы в каждом прослушивателе .. затем перебрать ее при включении :) – nifr
Я пытаюсь выяснить, как добавить элементы к глобальной переменной: $ twig-> addGlobal ('js_footer_extra', ''); Но, конечно, это позволяет мне переопределить глобальную переменную, а не добавлять к ней элементы. Каков наилучший способ добавить к глобальному массиву twig? Еще раз спасибо. – Vincent