2015-02-07 60 views
3

我正在尋找一個解決方案,但我找不到任何在stackoverflow中。通過BuildView方法將變量傳遞給Twig Symfony2

以下問題是我想將對象傳遞給樹枝模板。

我有一個擴展了Symfony2 Core的AbstractType的類。然後我明白我必須重寫我的特定類型的BuildView方法來移交變量。

的buildView方法是這樣的:

/** 
* 
* @param FormView $view 
* @param FormInterface $form 
* @param array $options 
*/ 
public function buildView(FormView $view, FormInterface $form, array $options) 
{ 
    parent::buildView($view, $form, $options); 
    $view->vars['test']='test'; 

} 

當我嘗試訪問我的樹枝文件中的變量({{測試}}),它告訴我變量測試沒有發現。

我誤解了什麼? 感謝您的幫助 AS

回答

0

沒有看到整個代碼,我懷疑當有父視圖存在時,您將視圖變量添加到子視圖。

$view->parent->vars['test'] = 'test'; 

希望能夠解決您的問題。

+0

我試過了,但後來發現:在src/AppBundle/Resources/views中渲染模板(「Notice:Undefined index:cache_key」)時拋出異常。有趣的是,當我做$ view-> vars ['test] ='test'時,我沒有得到這個錯誤報告; – AugustusS 2015-02-07 17:57:52

+0

恩,好吧,嘗試刪除你的buildView除了parent :: call,然後在它下面添加這個: $ view-> vars = array_replace($ view-> vars,array( 'test'=>'測試' )); cache_key鍵是擴展AbstractType類的BaseType類的一部分,您是否在任何地方使用它? – MichaelHindley 2015-02-07 18:21:55

+0

我沒有在其他地方使用BaseType。使用你的建議改變這一點,使我再次面臨同樣的問題,他無法找到變量測試。如果我添加這一行「$ view-> vars ['test'] ='test';」到抽象類方法buildView然後他可以找到變量測試。 – AugustusS 2015-02-07 18:38:02

0

你是連接新變種「測試」你的表格,所以要訪問它必須通過的形式,使其:

{{ formName.vars.test }}

希望它能幫助!