我使用FOSUserBundle,我想一些HTML元素添加到登记表。 其实,我做了,我可以看到我的形式添加的属性到User类。 问题是,我想这些领域(姓氏,名字,出生日期,等..),让我的CSS模板(引导)的外观和感觉 。 我成功通过重写它这样做的登录页面,因为HTML明确声明。 我想为注册页面做的一样,但它似乎混淆我的,因为这里的内容:
register.html.twig
{%伸出 “FOSUserBundle :: layout.html.twig” %}
{%块fos_user_content%} {%包括 “FOSUserBundle:注册:register_content.html.twig” %} {%末端嵌段fos_user_content%}
register_content.html.twig
{%trans_default_domain 'FOSUserBundle' %}
{{form_widget(形式)}}
我怎样才能访问我页面看到这个代码的元素?
试试这个
<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>
这个对我有用。
请在这里看到的官方文档:“ 重写表单 ”。 您需要创建一个自定义登记表类型的类,声明它作为一种服务,并告诉FOSUserBundle使用它。
要自定义模板,请参阅“ 重写模板 ”。 在你的情况,你可以创建app/Resources/FOSUserBundle/views/Registration/register.html.twig
。
更换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
这是我如何解决使用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('') }}