2013-03-21 104 views
3

鑑於發送到樹枝模板變量,如數組:動態樹枝變量名

$form = $this->createForm(new ServiceItemType() 
          , $entity 
          , array('attr'=> 
            array(
              'em' => $this->EM() 
             ,'group' => true 
          ))); 

我想捕捉在樹枝輕鬆訪問的變量。但是:

{% for key, value in form.vars.attr %} 
    {% set key = value %} 
{% endfor %} 

重新映射for循環中的鍵變量。

樹枝對象:

{% for key, value in form.vars.attr %} 
    {% set {{key}} = value %} 
{% endfor %} 

和堆棧我所知,似乎從來沒有地址設置。誰知道,請指出如何完成這個變量賦值?

+0

'{%set a = form.vars.attr%}''怎麼樣?那麼你可以嘗試調用'{{a.em}}'或'{{a.group}}'。它工作嗎? – 2013-03-22 00:07:41

+0

這將工作,但它更多的是解決方法。可能是我最好的選擇。 – Lighthart 2013-03-22 00:29:32

+0

在Twig中可能沒有原生解決方案,但是編寫一個允許此功能的擴展肯定是可能的。 – 2013-03-22 00:39:22

回答

5

我知道這句法工作

{% render "..." with {(key): value} %} 

你嘗試下面的語法? 截至3月22日星期五,此語法不起作用,因此您需要使用解決方法。

{% set (key) = value %} 

到一種替代方案是包括一個模板,並通過和form.vars.attr

{% include "YourAwesomeBundle:Controller:template.html.twig" with form.vars.attr %} 

您還可以使用merge function另一個數組合並form.vars.attr

{% set vars = {} %} 
{% set vars = vars|merge(form.vars.attr) %} 
{% include "YourAwesomeBundle:Controller:template.html.twig" with vars %} 

內包含的模板,你將能夠使用變量emgroup

+0

小枝錯誤:只能將變量分配給。意外的標記「標點符號」的值「(」(「(名稱」預期) – Lighthart 2013-03-22 16:00:36

+0

是的,這意味着沒有辦法做到這一點..它花了我一會兒找到'(varName)'語法,而當我在搜索因爲一個Twig開發者說他不認爲這個邏輯應該是Twig的一部分,如果你有興趣,我在我的答案中給出了一個替代方案 – 2013-03-22 17:54:20