Symfony添加bootstrap表单控件类

时间:2017-09-21 14:10:14

标签: php twitter-bootstrap forms symfony symfony-2.8

我使用symfony 2.8,我创建了一个注册表单,我想在密码和重复密码表单字段中添加bootstrap表单控件类。

$builder 
->add('name', TextType::class,array(
    'attr' => array(
        'class' => 'form-control'
    )
))  
-> add('plainPassword', RepeatedType::class, array(
    'type' => PasswordType::class,
    'first_options'  => array('label' => 'Password'),
    'second_options' => array('label' => 'Repeat Password'),
    'attr' => array('class' => 'form-control')
));

包括'名称'字段它的工作但是没有添加类的密码字段。 如何添加'表单控件'密码字段的类。 任何帮助深表感谢。 感谢。

2 个答案:

答案 0 :(得分:2)

有两种方法可以做到这一点。第一种是使用options,它会将选项传递给每个基础字段:

->add('plainPassword', RepeatedType::class, array(
    'type' => PasswordType::class,
    'first_options'  => array('label' => 'Password'),
    'second_options' => array('label' => 'Repeat Password'),
    'options' => array('attr' => array('class' => 'form-control'))
));

您也可以在first_optionssecond_options字段中添加该类,就像这样。如果您拥有特定于每个字段的选项,或者您想要覆盖主选项中的某些内容,那么这将非常有用。

->add('plainPassword', RepeatedType::class, array(
    'type' => PasswordType::class,
    'first_options'  => array(
        'label' => 'Password',
        'attr' => array('class' => 'form-control')
    ),
    'second_options'  => array(
        'label' => 'Password',
        'attr' => array('class' => 'form-control-override')
    ),
    'attr' => array('class' => 'form-control')
));

另外,as of Symfony 2.6它已built-in Bootstrap form theme support,您不必手动将这些类添加到所有字段。

答案 1 :(得分:1)

来自Symfony开发团队的一些人建议你应该直接在html(here中使用boostrap的类,如果你想看到这个建议的话)。这个建议对我来说是完美的感觉,因为Symfony用于后端开发,而不是前端。因此,解决此问题的理想方法是在Type类中创建两个字段,并在呈现表单时添加如下内容:

{{ form_row(name, { attr: { 'class': 'form-control' } ) }}
{{ form_row(password, { attr: { 'class': 'form-control' } ) }}
{{ form_row(plainPassword, { attr: { 'class': 'form-control' } ) }}