나는 이벤트 리스너/가입자에서 알려진 나뭇 가지 블록을 확장하는 방법을 찾고 있습니다.Symfony2 이벤트 리스너에서 나뭇 가지 확장하기
코드는 매우 기본입니다.
홈페이지 나뭇 가지 : 몸과 자바 스크립트 : 당신이 2 개 블록 단지 일반 HTML입니다 볼 수 있듯이
<!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>
.
예를 들어, 나는 KernelResponse에 이벤트 리스너를 가지고 있습니다. 내가 원하는 것은 나뭇 가지의 "extends"을 가진 "javascripts"블록에 새로운 자바 스크립트를 추가 할 수 있다는 것입니다.
코드가 될 수있는 일 같은 :
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->(), 대신 확장, 새로운 무언가를 렌더링의해야 렌더링 $ 응답을 가져 와서 'AcmeBundle : Javascript : index.html.twig'로 확장하면 "javascripts"블록에 더 많은 콘텐츠를 추가 할 수 있습니다. 여기
은의 예입니다 "AcmeBundle : 자바 스크립트 : index.html.twig"{% block javascripts %}
{{ parent() }}
<script>
var something = "new";
</script>
{% endblock %}
은 기본적으로 내가 프로그래밍 방식으로 이벤트 리스너에 나뭇 가지 블록을 확장 할 수있는 방법을 찾고 있어요.
미리 도움을 주셔서 감사합니다.
빠른 답장 nifr. 블록에 여러 코드를 추가 할 여러 이벤트 리스너가있는 경우 어떻게해야합니까? – Vincent
배열 변수를 등록하지 않은 경우 등록하고 각 리스너에서 요소를 추가 한 다음 포함 시키십시오. – nifr
다음과 같이 전역 변수에 요소를 추가하는 방법을 알아 내려고합니다 : $ twig-> addGlobal ('js_footer_extra', ''); 물론 이것은 전역 변수를 덮어 쓰기 만하고, 요소를 추가하는 것은 허용하지 않습니다. twig 글로벌 배열에 추가하는 가장 좋은 방법은 무엇입니까? 다시 한번 감사드립니다. – Vincent