问题描述
似乎在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 (将#修改为@)