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

Remove empty options in dropdown in Symfony 3.4

我创建了一个表单,用于填充满足特定条件的用户的下拉列表。但是,整个用户数组都已发送,但不符合条件的条目是空白的,因此我有一个下拉列表,其中包含很多我不想要的空白选项。查看其他 Whosebug 问题 'placeholder' 和 'empty_values' 已被使用,但这些似乎不起作用。

这是来自表单的代码:

        ->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;
}

不好意思,我看书太快了

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

->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(); ...
                }

        ]
    )