我正在使用 FOSUserBundle ,我想在注册表单中添加一些HTML元素。实际上,我做了,我可以在表单中看到User类的添加属性。问题是我想要那些字段(名字,姓氏,出生日期等)来获得我的CSS模板(bootstrap)的外观和感觉。 我通过覆盖它成功地为登录页面执行了此操作,因为HTML是显式声明的。我想对注册页面做同样的事情,但它似乎对我很困惑,因为这里的内容是:
register.html.twig
{%extends“FOSUserBundle :: layout.html.twig”%}
{%block fos_user_content%} {%include“FOSUserBundle:Registration:register_content.html.twig”%} {%endblock fos_user_content%}
register_content.html.twig
{%trans_default_domain'FOSUserBundle'%}
{{form_widget(form)}}如何从此代码访问我在页面中看到的元素?
答案 0 :(得分:8)
试试这个
<div class="form-group {% if form.plainPassword.first.vars.errors %}has-error{% endif %}">
<label class="col-lg-2 control-label">Password:</label>
<div class="col-lg-5">
{{ form_widget(form.plainPassword.first, {'attr': {'class': 'form-control input-lg', 'placeholder': 'Enter password', 'required': 'required'}}) }}
{% for errorItem in form.plainPassword.first.vars.errors %}
<label class="control-label has-error" for="{{ form.plainPassword.vars.id }}">{{ errorItem.message }}</label>
{% endfor %}
</div>
<div class="col-lg-5">
{{ form_widget(form.plainPassword.second, {'attr': {'class': 'form-control input-lg', 'placeholder': 'Enter password again', 'required': 'required'}}) }}
</div>
</div>
它对我有用。
答案 1 :(得分:2)
请参阅此处的官方文档:“Overriding Forms”。您需要创建自定义注册表单类型类,将其声明为服务,并告诉FOSUserBundle使用它。
要自定义模板,请参阅“Overriding Templates”。在您的情况下,您可以创建app/Resources/FOSUserBundle/views/Registration/register.html.twig
。
答案 2 :(得分:2)
用以下内容替换form_widget(form)
:
form_widget(form.username)
form_widget(form.email)
form_widget(form.plainPassword)
form_widget(form.myField)
form_rest(form)
在您的自定义RegistrationFormType
课程中,您可以使用以下命令在用户名字段中添加一个类:
$builder
->add('username', null, array('label' => 'form.username', 'translation_domain' => 'FOSUserBundle', 'attr' => array('class'=>'myClass')))
还可以手动查看有关渲染字段的表单文档:http://symfony.com/doc/current/book/forms.html#rendering-a-form-in-a-template
答案 3 :(得分:2)
以下是我使用FOSUserBundle,PUGXMultiUserBundle&amp; amp; 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('') }}