如何使用 sonata_type_model 启用排序?
How to enable sorting with sonata_type_model?
我正在开发一个使用 Sonata 的 Symfony 3.3 项目。我创建了两个实体:Question 和 QuestionGallery。我正在使用多对多关系和 sonata_type_model 来允许用户在每个问题库中嵌套一组问题。我的 formMapper->add() 调用如下所示:
$formMapper
->add('name')
->add('visible')
->add(
'questions',
'sonata_type_model',
['expanded' => false, 'by_reference' => true, 'multiple' => true, 'required' => false]
)
;
到目前为止一切顺利。现在我想允许用户以他们选择的任意顺序重新排序 Question 对象。这就是我 运行 遇到问题的地方:即使我从列表中间删除一个项目并将其重新附加到最后,当我保存 QuestionGallery 时它也会恢复到中间。我相信问题是按 ID 排序的,换句话说。
在短期内,我简单地在问题实体中添加了一个 "rank" 字段,效果很好。 但我很好奇:是否有一种内置方法可以允许任意重新排序,而无需引入用户必须手动填写的额外字段?(如果您知道允许用户手动填写的方法,则加分项拖放实体。)
您可以使用带有注释的学说映射:
/**
..ect..
*@ORM\OrderBy({"ranking" = "ASC"})
*/
protected $questions;
并在您的管理员中:
$formMapper
->add(
'questions',
'sonata_type_collection',
[
'expanded' => false,
'by_reference' => true,
'multiple' => true,
'required' => false
],
[
'edit' => 'inline',
'inline' => 'table',
'sortable' => 'ranking',
'order' => 'ASC'
]
)
;
我正在开发一个使用 Sonata 的 Symfony 3.3 项目。我创建了两个实体:Question 和 QuestionGallery。我正在使用多对多关系和 sonata_type_model 来允许用户在每个问题库中嵌套一组问题。我的 formMapper->add() 调用如下所示:
$formMapper
->add('name')
->add('visible')
->add(
'questions',
'sonata_type_model',
['expanded' => false, 'by_reference' => true, 'multiple' => true, 'required' => false]
)
;
到目前为止一切顺利。现在我想允许用户以他们选择的任意顺序重新排序 Question 对象。这就是我 运行 遇到问题的地方:即使我从列表中间删除一个项目并将其重新附加到最后,当我保存 QuestionGallery 时它也会恢复到中间。我相信问题是按 ID 排序的,换句话说。
在短期内,我简单地在问题实体中添加了一个 "rank" 字段,效果很好。 但我很好奇:是否有一种内置方法可以允许任意重新排序,而无需引入用户必须手动填写的额外字段?(如果您知道允许用户手动填写的方法,则加分项拖放实体。)
您可以使用带有注释的学说映射:
/**
..ect..
*@ORM\OrderBy({"ranking" = "ASC"})
*/
protected $questions;
并在您的管理员中:
$formMapper
->add(
'questions',
'sonata_type_collection',
[
'expanded' => false,
'by_reference' => true,
'multiple' => true,
'required' => false
],
[
'edit' => 'inline',
'inline' => 'table',
'sortable' => 'ranking',
'order' => 'ASC'
]
)
;