Symfony CollectionType FormField:依靠订单字段是提交/发布还是依靠索引?

问题描述

似乎在Symfony 3.4中,CollectionType表单字段的项目以提交/发布的顺序存储,而不是以存在索引的顺序存储。这是正确的吗?

我找到了不同的消息来源,它们说提交顺序无效,只有索引用于创建排序顺序(e.g. here)。这与我所经历的完全相反。这是否从Symfony 2更改为3?是否可以更改此行为?

我当然可以在FormType中添加一个PRE_SUBMIT处理函数以再次反转该列表。在解决了这个问题的同时,我想了解为什么索引顺序并没有真正起作用,但是在提交顺序上,尽管不同的消息来源另有说明。难道我做错了什么?来源不正确吗?有控制这种行为的选项吗?


上下文

在Symfony 3.4中,我创建了一个简单的表单,其中包含一个CollectionType字段以显示ToDoEntry实体的列表。

虽然条目以升序存储(最旧的条目在前),但应以降序显示形式(最新的条目在前)。因此,在Twig模板中,我只是反转了列表。因此,在提交表单时,条目将按降序发布,而索引仍按升序排序。

提交表单后,列表存储为提交:降序排列。因此,索引似乎没有任何作用,只考虑了提交顺序。

// From Type
class MyFormType extends AbstractType {
    ...
        public function buildForm(FormBuilderInterface $builder,array $options) {
            $builder
                ->add('todoEntries',CollectionType::class,array(
                    'entry_type' => ToDoEntryType::class,...
                ),...
        )) 
}
{# Twig Template #}
{{ form_start(form) }}
    ...    
    {% for todoEntry in form.todoEntries|reverse %}   // revers the list...
        {{ form_row(todoEntry) }}
    {% endfor %}
{{ form_end(form) }}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...