我对symfony2 Field组件有一点但不愉快的问题。例如,我想在twig模板中输出表单字段数组:
{% for field in form %}
{{ form_label( field ) }}: {{ form_field( field ) }}
{% endfor %}
这是文本字段配置:
$field = new TextField( 'FieldName', array(
'label' => 'MyCustomLabel',
) );
但不幸的是,当引擎呈现此输出时,我将'FieldName'作为标签而不是'MyCustomLabel'。如果我输出不在for的表单字段,我就不会有问题(在这种情况下,我可以在模板中为每个字段添加标签)。但是脚本在执行之前不知道表单字段的某些数量和配置。所以,我需要为场渲染实现循环方法。而且我也希望留在树枝上......我很乐意提供一个很好的建议:)
答案 0 :(得分:7)
如果要更改标签,请按照步骤操作。
1)创建表单类。
2)add('fieldName',null,array('label' => 'My New Label:'))
请不要更改fieldName,但可以在数组中使用Label。
享受!
答案 1 :(得分:4)
在模板中执行此操作的最简单方法 - 将第二个参数传递给form_label
<div class="form-group">
{{ form_label(form.email, 'Email:') }} <- this row
{{ form_widget(form.email, {'attr': {'class': 'form-control'}}) }}
</div>
答案 2 :(得分:3)
Symfony 2.1用户的答案,他们偶然发现了希望得到答案的答案,几乎就是@rikinadhyapak的答案。
如果您在buildForm方法中扩展了某些包的FormType类,如FOSUserBundle:
$field = $builder->get('username'); // get the field
$options = $field->getOptions(); // get the options
$type = $field->getType()->getName(); // get the name of the type
$options['label'] = "Login Name"; // change the label
$builder->add('username', $type, $options); // replace the field
答案 3 :(得分:1)
它添加在Symfony2 beta2 http://groups.google.com/group/symfony-users/browse_frm/thread/c66165093665809
中答案 4 :(得分:0)
我会诚实地推迟学习Symfony Form组件几周。 Symfony开发人员正在对Form API进行重大改革。根据我的理解,大部分都已完成,并且pull request has been submitted to the main repository。