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