【问题标题】:Passing variable to Twig through BuildView Method Symfony2通过 BuildView 方法 Symfony2 将变量传递给 Twig
【发布时间】:2015-04-07 16:53:58
【问题描述】:

我一直在寻找解决方案,但在 stackoverflow 中找不到任何解决方案。

以下问题是我想将一个对象传递给一个树枝模板。

我有一个扩展 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';

}

当我尝试访问我的 twig 文件 ({{test}}) 中的变量时,它告诉我未找到变量测试。

我误解了什么? 谢谢你的帮助 作为

【问题讨论】:

    标签: symfony variables twig


    【解决方案1】:

    没有看到整个代码,我怀疑当存在父视图时,您正在将视图变量添加到子视图中。

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

    希望能解决您的问题。

    【讨论】:

    • 我试过了,但后来我得到: 在 src/AppBundle/Resources/views.有趣的是,当我执行 $view->vars['test]='test'; 时,我没有收到此错误报告
    • 嗯好的,尝试删除 buildView 中除了 parent:: 调用之外的所有内容,然后在它下面添加: $view->vars = array_replace($view->vars, array( 'test ' => '测试' )); cache_key 键是 BaseType 类的一部分,它扩展了 AbstractType 类,你在任何地方使用它吗?
    • 我没有在其他任何地方使用 BaseType。使用您的建议更改此设置再次导致我遇到同样的问题,即他找不到变量测试。如果我添加这一行“$view->vars['test']='test';”到抽象类方法buildView然后他可以找到变量test。
    • 在调用 parent::buildView 之前,您是否尝试过设置 $view->vars['test'] = 'test'?您使用的是哪个版本的 Symfony?
    • 使用最新版本的 Symfony
    【解决方案2】:

    您正在将新的 var 'test' 附加到您的表单中,因此要访问它,您必须通过表单来访问它:

    {{ formName.vars.test }}

    希望对你有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-03
      • 2012-10-06
      • 2011-08-29
      • 2019-11-10
      • 1970-01-01
      • 2023-03-19
      • 2016-04-20
      相关资源
      最近更新 更多