Aur*_*rel 14 symfony-forms symfony twig
这是我的FormType:
public function buildForm(FormBuilder $builder, array $options)
{
$builder
->add('user', 'entity', array(
'class' => 'UserBundle:User',
'expanded' => true,
'property' => 'name',
));
}
Run Code Online (Sandbox Code Playgroud)
有没有办法在视图(Twig)中访问用户的字段?
我想做这样的事情:
{% for u in form.user %}
{{ form_widget(u) }}
{{ form_label(u) }}
{% if u.moneyLeft > 0 %}
<span>{{ u.name }} : {{ u.moneyLeft }} €</span>
{% endif %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
...其中moneyLeft和name是来自User实体的字段.
Aar*_*ser 31
在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
));
}
Run Code Online (Sandbox Code Playgroud)
在Twig模板中:
{{ 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) }}
Run Code Online (Sandbox Code Playgroud)
Ber*_*sek 10
截至今天,您可以在主分支(以及即将发布的2.1)中执行以下操作:
{{ u.vars.data.name }}
Run Code Online (Sandbox Code Playgroud)
u是用户的表单视图,其中包含附加变量的列表.该data变量包含表单的规范化数据,通常是您的对象(除非您添加了自定义模型转换器).
在早期版本的Symfony中,您可以:
{{ u.vars.value.name }}
Run Code Online (Sandbox Code Playgroud)
该value变量包含表单的视图数据,也是您的对象(除非您添加了自定义模型或视图转换器).
如果您正在使用Symfony master或> = 2.1,我建议您访问data而不是value.
这对我来说在Symfony 3.1中用于收音机小部件:
{% set entity = form.parent.vars.choices[form.vars.name].data %}
Run Code Online (Sandbox Code Playgroud)
版本2.6.7
与Aaron 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 -%}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23255 次 |
| 最近记录: |