这里是我的FormType:
public function buildForm(FormBuilder $builder, array $options)
{
$builder
->add('user', 'entity', array(
'class' => 'UserBundle:User',
'expanded' => true,
'property' => 'name',
));
}
是否有访问视图(小枝)用户域的方法吗?
我想这样做:
{% for u in form.user %}
{{ form_widget(u) }}
{{ form_label(u) }}
{% if u.moneyLeft > 0 %}
<span>{{ u.name }} : {{ u.moneyLeft }} €</span>
{% endif %}
{% endfor %}
...其中moneyLeft和名称 ,从用户实体领域。
在Symfony的2.5 - 您可以通过使用孩子的指数值的每个选择访问数据做到这一点。
在表单生成器 - 如你所期望的:
public function buildForm(FormBuilderInterface $builder, array $options)
{
// Generate form
$builder
->add('child', 'entity', array(
'class' => 'MyBundle:Child',
'label' => 'Children',
'property' => 'any_property_for_label',
'expanded' => true,
'multiple' => true
));
}
在树枝模板:
{{ form_start(form) }}
{% for child in form.child %}
{% set index = child.vars.value %}{# get array index #}
{% set entity = form.child.vars.choices[index].data %}{# get entity object #}
<tr>
<td>{{ form_widget(child) }}</td>{# render checkbox #}
<td>{{ entity.name }}</td>
<td>{{ entity.email }}</td>
<td>{{ entity.otherProperty }}</td>
</tr>
{% endfor %}
{{ form_end(form) }}
到今天为止,你可以在主分支(和即将推出的2.1)以下内容:
{{ u.vars.data.name }}
u
对于用户,它包含附着变量的列表的形式图。 该data
变量包含的形式,通常是你的对象的标准化数据(除非你添加自定义模型变压器)。
在早期版本的Symfony的,你可以这样做:
{{ u.vars.value.name }}
的value
变量包含的形式,这也是你的对象的视图数据(除非添加了定制模型或视图变压器)。
如果您在Symfony的主人或> = 2.1的工作,我建议访问data
,而不是value
。
这为我工作在Symfony的3.1无线电部件:
{% set entity = form.parent.vars.choices[form.vars.name].data %}
2.6.7版本
类似于亚伦GEISER建议,您可以使用自定义表单控件来实现这一目标:
{# src/AppBundle/Resources/views/Form/fields.html.twig #}
{% extends 'form_div_layout.html.twig' %}
{%- block entity_widget -%}
<div {{ block('widget_container_attributes') }}>
{%- for n, child in form %}
{{- form_widget(child, {
'entity': form.vars.choices[n].data
}) -}}
{{- form_label(child) -}}
{% endfor -%}
</div>
{%- endblock %-}
{%- block radio_widget -%}
{# You now have access to entity #}
{%- endblock -%}
更新伯恩哈德Schussek的回答为symfony1.2 2.8.4(甚至略低版):
{% for key,value in form.user %} {# key is the ID in the database table #}
{{ form_widget(value, {'label':value.vars.label}) }}
{{ form.user.vars.choices[key].data.moneyLeft }} {# this syntax is new #}
{% endfor %}