以下是我使用 FOSUserBundle、PUGXMultiUserBundle 和 BraincraftedBoostrapBundle 解决此问题的方法:
根据 FOSUserBundle 文档,将 UserBundle 添加为 FOSUser 的子项。创建一个RegistrationFormType
包含以下内容的自定义,其中仅添加attr
和label_attr
数组:
$builder
->add('email', 'email', array(
'label' => 'form.email',
'translation_domain' => 'FOSUserBundle',
'attr' => array(
'placeholder' => 'E-mail',
),
'label_attr' => array(
'class' => 'sr-only',
)))
->add('username', null, array(
'label' => 'form.username',
'translation_domain' => 'FOSUserBundle',
'attr' => array(
'placeholder' => 'Username',
),
'label_attr' => array(
'class' => 'sr-only',
)))
->add('plainPassword', 'repeated', array(
'type' => 'password',
'options' => array('translation_domain' => 'FOSUserBundle'),
'first_options' => array('label' => 'form.password',
'attr' => array(
'placeholder' => 'Password',
),
'label_attr' => array(
'class' => 'sr-only',
)),
'second_options' => array('label' => 'form.password_confirmation',
'attr' => array(
'placeholder' => 'Confirm password',
),
'label_attr' => array(
'class' => 'sr-only',
)),
'invalid_message' => 'fos_user.password.mismatch',
))
;
注册表单模板如下所示:
<form action="{{ path('volunteer_registration') }}" method="POST" class="form-inline">
{{ bootstrap_set_style('form-inline') }}
{{ form_row(form.firstName) }}
{{ form_row(form.lastName) }}
{{ form_row(form.username) }}
{{ form_row(form.email) }}
<br/>
{{ form_row(form.plainPassword) }}
{{ form_row(form.plainPassword.second) }}
{{ bootstrap_set_style('') }}