2014-02-13 37 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