Symfony2:query_builder打破EntityType字段上preferred_choices的排序

时间:2016-05-14 23:48:34

标签: php symfony doctrine-orm

EntityType传递到Symfony 2.8.6中表单的query_builder时,结合query_builder(请参阅http://symfony.com/doc/current/reference/forms/types/entity.html#query-builder),首选的选项会根据以下内容重新排序choices: - (

1 个答案:

答案 0 :(得分:0)

这是Symfony中的已知问题,请参阅https://github.com/symfony/symfony/issues/5136。 @Bernhard Schussek解释了原因:

  

我认为这里的问题是preferred_choices包含一个排序数组,query_builder从该数组中选择值,保持原始顺序。

所以它不是preferred_choices实际上违反了排序。显然,$qb = function (EntityRepository $er) { return $er->createQueryBuilder('a') ->addSelect('(CASE WHEN a.name=\'Whatever\' then 1 ELSE 2 END) AS HIDDEN tmp') // HIDDEN is important! ->addOrderBy('tmp', 'ASC')->addOrderBy('a.name', 'ASC'); }; 总是的顺序与整个选项列表的顺序相同。

解决方法:在您的FormType中,添加帮助列以处理的首选选项:

->add('field', EntityType::class, array('query_builder'=>$qb, ...)

然后:

<string name="try_again">Reconnect</string>