Symfony2.1:如何手动渲染“重复”小部件

时间:2012-09-10 17:53:48

标签: forms symfony twig symfony-2.1

Symfony2.1 (以及Symfony2.0)中,可以render a widget by hand in a Twig template。因此,如果要渲染文本字段名称“username”,则可以单独呈现相关的标签错误输入,即:

{{ form_label(form.username) }}
{{ form_errors(form.username) }}
{{ form_widget(form.username) }}

在Symfony2.1中,引入了Repeated字段组。确保用户没有为重要条目插入错误值(例如电子邮件密码)非常有用。

问题是,如何手动在Twig模板中呈现

请注意,在这种情况下,{{ form_widget(form.username) }}将呈现整个组件(即标签输入)。

2 个答案:

答案 0 :(得分:6)

    $builder->add('userPass', 'repeated', array(
        'type'     => 'password',
        'label'    => 'Zayso Password',
        'required' => true,
        'invalid_message' => 'The password fields must match.',
        'constraints' => new NotBlank(),

        'first_options'  => array('label' => 'Zayso Password'),
        'second_options' => array('label' => 'Zayso Password(repeat)'),

        'first_name'  => 'pass1', // form.userPass.pass1
        'second_name' => 'pass2', // form.userPass.pass2
    ));

在你的模板中,你可以这样做:{{form_widget(form.userPass.pass1}}。不知道它在哪里被记录但在某处找到了。

答案 1 :(得分:3)

迟到的答案,但您也可以添加

  

{{form_widget(form.username.first)}}

生成第一个小部件元素。

如果您想单独显示labelwidget,可以使用:

{{ form_label(form.username.first) }}
{{ form_errors(form.username.first) }}
{{ form_widget(form.username.first) }}

{{ form_label(form.username.second) }}
{{ form_errors(form.username.second) }}
{{ form_widget(form.username.second) }}

以下是Repeated Field Type的文档。