symfony2 textfield自定义标签

时间:2011-04-05 11:33:33

标签: forms rendering symfony twig

我对symfony2 Field组件有一点但不愉快的问题。例如,我想在twig模板中输出表单字段数组:

{% for field in form %}
    {{ form_label( field ) }}: {{ form_field( field ) }}
{% endfor %}

这是文本字段配置:

$field = new TextField( 'FieldName', array(
    'label' => 'MyCustomLabel',
) );

但不幸的是,当引擎呈现此输出时,我将'FieldName'作为标签而不是'MyCustomLabel'。如果我输出不在for的表单字段,我就不会有问题(在这种情况下,我可以在模板中为每个字段添加标签)。但是脚本在执行之前不知道表单字段的某些数量和配置。所以,我需要为场渲染实现循环方法。而且我也希望留在树枝上......我很乐意提供一个很好的建议:)

5 个答案:

答案 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)

答案 4 :(得分:0)

我会诚实地推迟学习Symfony Form组件几周。 Symfony开发人员正在对Form API进行重大改革。根据我的理解,大部分都已完成,并且pull request has been submitted to the main repository