我正在尝试自定义特定的小部件,例如文档: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
以及如何使用!
我看到另一个我尚未尝试过的解决方案:将此自定义放在另一个模板中。但我真的不想那样做(新模板中的几行),应该有一种方法只在 ONE模板中做到这一点?!
答案 0 :(得分: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) }}
来源:How to get entity or pass variable to Symfony2 twig form widget?