我在我的项目中使用Symfony2框架并使用Form组件来创建表单。我使用选择输入字段类型使用户能够多重选择选项,并且使用插件使用户能够订购这些选项。 不幸的是,将表单发布到控制器时,这些选项的顺序不会保持。请求具有正确的顺序,表单组件使用
choices
选项的顺序。
如何使用表单组件和选择输入字段类型维护已发布的订单?
郑重声明,我在 Google、Stackoverflow 和 Github 上进行了搜索,只发现了一个关于保持
preferred_choices
顺序的问题(https://github.com/symfony/symfony/issues/5136)。这个问题确实谈到了 sort
选项,但我在 Symfony2 文档中找不到这个选项。
我尝试解决同样的问题:需要选择多个组织并将它们在列表中排序。
在
$form->getData()
之后,我的请求订单被更改了。
我制作了表单事件处理程序,发现数据在
FormEvents::PRE_SUBMIT
事件上具有正确的顺序,并将其保存在 $this->preSubmitData
中。
之后,在
FormEvents::SUBMIT
事件中,我以错误的顺序覆盖数据(实际上,这取决于选择选项的顺序)。 (您可以从方法中删除 array_merge)
$this->preSubmitData