Symfony2表单主题覆盖集合入口行与循环?

时间:2014-03-05 14:06:20

标签: php loops symfony types twig

我的表单集条目存在问题。

例如我的表单类型。

// ProfileFormType
public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('name')
        ->add('emails', 'collection', array(
            'type' => new EmailType(),
            'allow_add' => true,
            'allow_delete' => true
        ))
    ;
}

这是上面集合的电子邮件类型。

// EmailType
public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('email', 'email')
        ->add('publicAccess')
    ;
}

现在是该集合条目行的表单主题。

{%- block _fos_user_profile_form_emails_entry_row %}
    <div class="email form-group{% if form.email.vars.errors | length %} has-error{% endif %}">
        <div class="input-group col-xs-3">
            <span class="input-group-addon">{{ form_widget(form.publicAccess) }}</span>
            {{ form_widget(form.email) }}
            {#% if loop is defined %}{{ dump(loop) }}{% endif %#}
            <span class="input-group-btn"><a class="btn btn-success"><span class="glyphicon glyphicon-plus glyphicon-xs"></span></a></span>
        </div>
        {{ form_errors(form.email) }}
    </div>
{% endblock -%}

但问题是我没有条目的循环或其他东西......

如何检查条目是否是集合的最后一个条目?

原因是我想为所有条目添加“减号”按钮而不是“glypicon-plus”。

2 个答案:

答案 0 :(得分:0)

您可以通过以下方式访问最后一个条目:

{% if loop.last %}
    {# your custom code for the last entry #}
{% else %}
    {# the others entries #}
{% endif %}

所以你可以用它来选择好的按钮:

{%- block _fos_user_profile_form_emails_entry_row %}
    <div class="email form-group{% if form.email.vars.errors | length %} has-error{% endif %}">
        <div class="input-group col-xs-3">
            <span class="input-group-addon">{{ form_widget(form.publicAccess) }}</span>
            {{ form_widget(form.email) }}
            <span class="input-group-btn"><a class="btn btn-success"><span class="glyphicon {{ (loop.last) ? 'glypicon-plus' : 'glyphicon-minus' }} glyphicon-xs"></span></a></span>
        </div>
        {{ form_errors(form.email) }}
    </div>
{% endblock -%}

答案 1 :(得分:0)

我认为您应该将该条目与父母的最后一个元素进行比较。

像这样:

{% if form == form.parent | last %}
    it's the last
{% else %}
    it's not the last
{% endif %}