Symfony 添加 bootstrap 表单控件 class

Symfony Add bootstrap form-control class

我正在使用 symfony 2.8,我创建了一个注册表,我想将 bootstrap form-control class 添加到密码和重复密码表单字段。

$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')
));

Incase of 'name' 字段其工作但密码字段 class 未添加。 如何为密码字段添加 'form-control' class。 任何帮助深表感谢。 谢谢

有两种方法可以做到这一点。第一种是使用 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_options and second_options 字段中添加 class,就像这样。如果您有特定于每个字段的选项或者您想覆盖主要选项中的某些内容,这将很有用。

->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 it has has built-in Bootstrap form theme support 您不必手动将这些 class 添加到您的所有字段。

Symfony 开发团队的一些人建议您直接在 html 中使用 boostrap 的 classes(here,如果您想查看建议)。这个建议对我来说很有意义,因为 Symfony 用于后端开发,而不是前端。所以解决这个问题的理想方法是在 Type class 中创建你的两个字段,并在呈现表单时添加如下内容:

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