【问题标题】:Symfony2 form theme override collection entry row with loop?Symfony2表单主题用循环覆盖集合条目行?
【发布时间】:2014-04-07 15:31:13
【问题描述】:

我的表单集合条目有问题。

例如我的表单类型。

// 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”。

【问题讨论】:

    标签: php loops symfony types twig


    【解决方案1】:

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

    像这样:

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

    【讨论】:

      【解决方案2】:

      您可以使用以下命令访问最后一个条目:

      {% 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 -%}
      

      【讨论】:

      • 不抱歉。 Variable "loop" does not exist我觉得主题里面没有循环。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-02
      • 1970-01-01
      相关资源
      最近更新 更多