【问题标题】:Symfony: how to place a specific item in first position with query_builder option?Symfony:如何使用 query_builder 选项将特定项目放在首位?
【发布时间】:2016-04-09 23:28:03
【问题描述】:

在表单中,我使用 EntityType 字段,它允许从实体 Member 中选择多个项目。我通过表单的选项(名为$selfId 的变量)将特定成员的ID 发送到我的表单,并希望使用query_builder 函数返回该特定成员将出现在第一个位置的成员列表。我怎么能做到这一点?我正在使用 Symfony 3。

我在想这样的事情:

->add('members',    EntityType::class, array(
        'required'      => true,
        'label'         => 'Members',
        'class'         => 'AppBundle:Member',
        'multiple'      => true,
        'query_builder' => function (MemberRepository $er) use ($selfId) {
                                $qb = $er->createQueryBuilder('m');
                                return $qb
                                          ->orderBy('m.id = :selfId') // invented code!!!!!!!
                                          ->setParameter('selfId', $selfId)
                                          ;
                            }
        ))
;

【问题讨论】:

    标签: forms symfony


    【解决方案1】:

    您可以在上面的代码中添加一个名为preferred_choices 的项目,它应该可以满足您的要求

    http://symfony.com/doc/current/reference/forms/types/entity.html#preferred-choices

    【讨论】:

    • 感谢您的回答。选项 preferred_choices 可以帮助 display 一些选项在第一位置,但实际上不会根据我的需要更改选项顺序。此外,要使用preferred_choices,我应该知道要放在首位的选项的索引值,但我只知道它的Id,因为它是一个实体。
    猜你喜欢
    • 1970-01-01
    • 2019-03-09
    • 1970-01-01
    • 2015-02-16
    • 2013-11-01
    • 2013-10-10
    • 2013-01-05
    • 1970-01-01
    • 2011-11-07
    相关资源
    最近更新 更多