在Symfony 3.4的下拉列表中删除空选项

时间:2018-08-09 09:09:05

标签: php symfony symfony-3.4

我创建了一个表单,其中填充了符合特定条件的用户的下拉菜单。但是,将发送整个用户数组,但是不符合条件的条目为空白,因此我有一个下拉菜单,其中包含很多空白选项,我不希望这样做。查看其他stackoverflow问题,使用了“占位符”和“空值”,但这些似乎不起作用。

这是表格中的代码:

        ->add(
            'userParent',
            EntityType::class,
            [   
                'class' => User::class,
                'choice_label' => function ($parents) {
                    return $parents->getUniqueName();
                }

            ]
        )

和getUniqueName函数:

    public function getUniqueName() {

    $name = "";

    $nameBlock = json_decode($this->name, true);
    if (is_array($nameBlock) && isset($nameBlock['name'])) {
        $name = $nameBlock['name'];  
    } 
    return $name;
}

2 个答案:

答案 0 :(得分:0)

我不好,我读得太快了。

由于您的字段已序列化,因此无法使用自定义查询来过滤不带名称的实体,但是如果显示了表单,则仍可以在呈现时忽略空名称。例如,通过表单主题,通过覆盖默认的choice_type主题,或为您的字段设置自定义block_name并创建关联的主题,请参见https://symfony.com/doc/current/form/form_customization.html#form-theming-in-twighttps://symfony.com/doc/current/reference/forms/types/form.html#block-name

答案 1 :(得分:0)

->add(
        'userParent',
        EntityType::class,
        [   
            'class' => User::class,
            'query_builder' => function (\Doctrine\ORM\EntityRepository $repository) {
                    // fetch data from the repository based on your criteria
                    return $repository->findUsersFunction();

                    //or create the query right here
                    //return $er->createQueryBuilder('u')->where(); ...
                }

        ]
    )