在Twig中自定义渲染Symfony 2中的“重复”字段
我刚开始使用Twig,并试图建立一个注册表单。 要添加密码/重新输入密码字段,我使用“重复”文件类型:
->add('password', 'repeated', array(
    'type' => 'password',
    'invalid_message' => 'Passwords have to be equal.',
    'first_name'      => 'Password',
    'second_name'     => 'Re-enter password',
));
它按预期工作。 然而,我有问题,我想添加一些自定义类等等,我的形式。 所以我的模板看起来像这样:
<form action="{{ path('register') }}" method="post" {{ form_enctype(form) }}>
    {{ form_errors(form) }}
    {{ form_errors(form.username) }}
    <div class="form-field">
        {{ form_label(form.username, null, { 'attr': {'class': 'form-label'} }) }}
        {{ form_widget(form.username, { 'attr': {'class': 'form-input'} }) }}
    </div>
    {{ form_errors(form.email) }}
    <div class="form-field">
        {{ form_label(form.email, null, { 'attr': {'class': 'form-label'} }) }}
        {{ form_widget(form.email, { 'attr': {'class': 'form-input'} }) }}
    </div>
    {{ form_errors(form.password) }}
    <div class="form-field">
        {{ form_label(form.password, null, { 'attr': {'class': 'form-label'} }) }}
        {{ form_widget(form.password, { 'attr': {'class': 'form-input'} }) }}
    </div>
    {{ form_rest(form) }}
    <input type="submit" class="contact-submit" />
</form>
这适用于除密码部分以外的所有内容。 我想在这里单独呈现两个字段,现在他们都只是呈现在同一个div中。
我该如何解决? 有没有办法在Twig中选择独立的字段? 或者我只是做错了什么,因为我首先遇到了这个问题。
随机猜测后,我解决了我自己的问题。 我会在这里发布它,以便可能通过搜索来到这个问题的其他人也知道答案:
{% for passwordField in form.password %}
    <div class="form-field">
        {{ form_label(passwordField, null, { 'attr': {'class': 'form-label'} }) }}
        {{ form_widget(passwordField, { 'attr': {'class': 'form-input'} }) }}
    </div>
{% endfor %}
如果你想在你的树枝模板中重复使用两个密码字段,你只需要调用它们各自的名字,如:
{{ form_label(form.password.pass, "Password :") }}
{{ form_widget(form.password.pass) }}
{{ form_label(form.password.confirm, "Confirm :") }}
{{ form_widget(form.password.confirm) }}
当然在你的功能中:
/..
->add('password', 'repeated', array(
'first_name' => 'pass',
'second_name' => 'confirm',
'type' => 'password'
))
问候。
这适用于我:
....
{{ form_errors(form.password.first) }}
<div class="form-field">
    {{ form_label(form.password.first, null, { 'attr': {'class': 'form-label'} }) }}
    {{ form_widget(form.password.first, { 'attr': {'class': 'form-input'} }) }}
</div>
{{ form_errors(form.password.second) }}
<div class="form-field">
    {{ form_label(form.password.second, null, { 'attr': {'class': 'form-label'} }) }}
    {{ form_widget(form.password.second, { 'attr': {'class': 'form-input'} }) }}
</div>
....
上一篇: Custom rendering of a "repeated" field from Symfony 2 in Twig
下一篇: Jenkins email notification is successfully sent but not received
