在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>
....
链接地址: http://www.djcxy.com/p/81389.html

上一篇: Custom rendering of a "repeated" field from Symfony 2 in Twig

下一篇: Jenkins email notification is successfully sent but not received