gpt4 book ai didi

php - Symfony 复选框列出了 Twig 渲染

转载 作者:行者123 更新时间:2023-11-29 18:58:18 25 4
gpt4 key购买 nike

我对 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 :显示按类别分组的能力复选框列表,但不显示类别。

有人有想法吗?

最佳答案

如果您想更改所有 Competence 的顺序您可能应该使用 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 之间关系的注释和CategorySee link

'expanded' => true : a list of competences checkboxes displayed grouped by categories, but the categories are not shown.

这是正确的,因为它是从 ChoiceType 继承的选项。仅当将其呈现为 <SELECT> 时,分组才有效。您可以在下拉菜单中使用 <optgroup>用于分组。我认为没有办法从 symfony 的 FormTypes 中获得一堆(列​​表)带有任何分组的复选框......至少没有任何额外的优惠。

当然,您可以创建自己的 FormType 并扩展 Twig-Widgets 等。 ...或者您可以尝试使用 Collection 获得所需的外观(嵌入)表单...但这只是想法,因为我不知道您的实体及其关系是什么样子。

关于php - Symfony 复选框列出了 Twig 渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44026162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com