如何解决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 举报,一经查实,本站将立刻删除。