2014-02-13 2 views
1

레이아웃에서 호출 할 공통 나뭇 가지 함수를 추가하려고하지만 결과는 주어진 매개 변수에 따라 각 페이지마다 다릅니다.Symfony2 twig 함수 템플릿 변수

나뭇 가지 기능에 각 매개 변수를 추가하고 싶지 않습니다.

이러한 매개 변수를 찾는 방법이 있습니까?

exemple :

layout.html.twig :

{{ my_twig_function() }} 

list.html.twig

{% extends "::layout.html.twig" %} 

{% if test is defined%}test is defined{% endif %} 

myTwigExtension.php :

public function getFunctions() 
{ 
    return array(
     'my_twig_function' => new \Twig_Function_Method($this, 'getParams'), 
    ); 
} 

public function getParams() 
{ 

    // here a way to find all parameters passed to the list.html.twig 

    return "ok"; 
} 

어떤 아이디어가?

+0

함수 대신 매크로를 사용할 수 있습니까? –

+0

나는 현재 컨트롤러가 제공하는 모든 매개 변수를 검사 할 수 있기를 원하는 것처럼 매크로에서 같은 문제가 발생할 것이라고 생각한다. – user1014102

답변

0

MyTwigExtension 클래스를 서비스로 추가 했습니까?

services: 
    twig.twig_extension: 
     class: Namespace\NameBundle\Twig\MyTwigExtension 
     tags: 
      - { name: twig.extension } 
     arguments: [] 
+0

예 나는했으나 각 컨트롤러에서 주어진 매개 변수를 전달하지 않고 사용하려고합니다. – user1014102

+0

죄송합니다. 이해하지 못했습니다. 필자의 함수는 페이지의 변수에 액세스 할 수 없기 때문에 불가능합니다. 그러나 twig_extension 선언을 사용하면 매개 변수 및/또는 컨테이너 서비스를 삽입하고 매개 변수에 액세스 할 수 있습니다. 어쩌면, 설정 파일에서 페이지 매개 변수를 정의하면 문제에 대한 답을 얻을 수 있습니다. –

+0

정적 인 컨트롤러뿐만 아니라 컨트롤러가 제공하는 매개 변수를 사용하고 싶습니다. KernelEvents :: VIEW와 같은 이벤트를 만들어야한다고 생각합니다. 내 컨트롤러가 응답을 반환하기 때문에 이것을 사용할 수 없습니다. --------- FrameworkBundle : Controller : Controller-> 렌더링 및 사용자 지정 이벤트 디스패치를 ​​어떻게 생각합니까? – user1014102

관련 문제