我对Symfony很新,我有一个具体的问题。 我有一份工作申请表,申请人可以选择与类别相关的能力。
实体:
应用程序与能力相关联多少
与分类相关的能力多对一
所以在ApplicationType中我有:
->add('competences', EntityType::class, array(
'class' => 'SanOffresBundle:Competence',
'label' => 'Compétences (sélectionnez-en autant que vous voulez)',
'choice_label' => 'nom',
'multiple' => true,
'expanded' => true,
'query_builder' => function (CompetenceRepository $er) {
return $er->createQueryBuilder('cc')
->orderBy('cc.nom', 'ASC');},
'group_by' => function($val, $key, $index) {
return $val->getCategorie()->getNom();},
))
通过以下代码和变体,我得到了:
'expanded'=> false:具有按类别排序的权限的菜单,但类别不按字母顺序排列。如果对类别进行排序,这将是一个可接受的替代方案,但有超过100个能力可供选择,它不是用户友好的。
'expanded'=> true:显示按类别分组的权限列表复选框,但不显示类别。
有人会有想法吗?
答案 0 :(得分:0)
如果您想使用所有Competence
更改secect中的订单,则可能应该使用join
'query_builder' => function (CompetenceRepository $er) {
return $er->createQueryBuilder('cc')
->join('cc.category', 'cat') //something like that
->orderBy('cat.name', 'ASC')->addOrderBy('cc.nom', 'ASC');
}
另一种方法是在@ORM\OrderBy({...})
和Compentence
之间的关系中尝试Category
注释。 C standard
'expanded'=> true:显示按类别分组的权限列表复选框,但不显示类别。
这是正确的,因为它是ChoiceType
的继承选项。仅当您将其呈现为<SELECT>
下拉列表时才可以分组,您可以使用<optgroup>
进行分组。我认为没有办法从symfony的FormTypes开箱即用任何分组的复选框(列表)。至少没有任何额外的报价。
您可以创建自己的FormType并扩展Twig-Widgets。 ...或者你可以尝试用See link(embedet)形式获得所需的外观...但这只是想法,因为我不知道你的实体及其关系是什么样的。