我想覆盖FOS Userbundle的默认注册表单,并为密码输入添加自定义类。所以我已将register.html.twig和register_content.html.twig复制到相应的目录中并编辑了register_content.html:
{% trans_default_domain 'FOSUserBundle' %}
<form action="{{ path('fos_user_registration_register') }}" {{ form_enctype(form) }} method="POST" class="fos_user_registration_register">
{{ form_errors(form) }}
{{ form_row(form.email, {'attr': {'class': 'input-block-level'}}) }}
{{ form_row(form.username, {'attr': {'class': 'input-block-level'}}) }}
{{ form_row(form.plainPassword, {'attr': {'class': 'input-block-level'}}) }}
{#{{ form_row(form.submit, { 'label': 'Submit me' }) }}#}
{{ form_end(form) }}
<div>
<input type="submit" value="{{ 'registration.submit'|trans }}" />
</div>
{'attr': {'class': 'input-block-level'}}
- &gt;它适用于除plainPassword之外的每个输入。我猜它是因为它重复或类似的东西。使用plainPassword删除form_row并清除缓存后仍然显示更多内容,因此它似乎来自另一个文件。
答案 0 :(得分:4)
它不会来自另一个文件,当您调用它时,它会渲染您尚未渲染的所有字段。 要在plainPassword字段中添加一个类,您应该对它的每个元素执行一次,因为普通密码是一个包含两个字段的数组(密码字段和确认密码字段)。 要做到这一点,你需要做这样的事情:
{{ form_widget(form.plainPassword.first, { 'attr': {'class': 'myclass'} }) }}
{{ form_widget(form.plainPassword.second, { 'attr': {'class': 'myclass'} }) }}