2015-02-07 77 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 }}

希望它能帮助!