2014-02-13 38 views
1

我想添加一个普通的分支函数,它将在布局中调用,但结果将根据给定的参数为每个页面指定。Symfony2分支函数模板变量

我不想在小枝函数中添加每个参数。

有什么方法可以找到这些参数吗?

为例:

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