2

我正在尝试自定义特定的小部件,例如在文档中:http ://symfony.com/doc/current/cookbook/form/form_customization.html#how-to-customize-an-individual-field

问题是在这个自定义块中,我需要使用我实际模板中的一个变量。我认为“块可以从外部范围访问变量”,但在这种情况下显然不是:

{% extends "CDASvBundle::layout.html.twig" %}
{% block _contact_activity1_widget %}
<select name="contact[activity1]">
    {% for key, child_contact_categories in contact_categories_tab %}
    <option value="{{key}}">{{child_contact_categories}}</option>
    {% endfor %}
</select>

contact_categories_tab意思是未定义,但在这个块之外(例如在普通块content中),它可以工作!

我尝试了类似的东西:

{% use 'form_div_layout.html.twig' with contact_categories_tab as contact_categories_tab %}

但这也不是......虽然我不确定我是否理解我是否必须使用use以及如何使用!

我看到了另一个我还没有尝试过的解决方案:把这个自定义放在另一个模板中。但我真的不想这样做(新模板中的几行),应该有一种方法可以只在一个模板中做到这一点?!

4

1 回答 1

1

终于在上一篇文章中找到了答案:

每个 symfony 表单类型都扩展 AbstractType 类。

AbstactType 类有方法:

public function buildView(FormView $view, FormInterface $form, array $options)
{
    $view->set('img_src', '120x100.jpg');
    $view->set('my_variable', $foo);

}

您可以在表单类型上创建此方法,然后在树枝中创建下一个方法:

{{ asset(img_src) }}

资料来源:如何获取实体或将变量传递给 Symfony2 树枝表单小部件?

于 2013-07-08T08:56:42.233 回答