symfony 在未设置EntityType时为其添加表单选项(空)

qv7cva1a  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(151)

使用Symfony 6.1,我希望有一个自定义的EntityType表单类型,它允许我设置NULL(空表单字段),但在<select>中有一个占位符

<?php

namespace App\Form\Type;

use App\Entity\Admin;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\OptionsResolver\OptionsResolver;

class AdminEntityType extends AbstractType
{
    public function getParent(): string
    {
        return EntityType::class;
    }

    /**
     * {@inheritdoc}
     */
    public function configureOptions(OptionsResolver $resolver): void
    {
        $resolver->setDefaults([
            'class' => Admin::class,
            'label' => 'Admin :',
            'choice_label' => function (?Admin $admin): string {
                if ($admin instanceof Admin) {
                    return trim(
                        ($admin->getFirstName() ?? "") . " " .
                        ($admin->getLastName() ?? "") .
                        " (" . $admin->getEmail() . ")"
                    );
                }
                return '';
            },
            'required' => false,
            'mapped' => true,
            'multiple' => false,
        ]);
    }
}

此表单域在筛选器中使用,因此如果它为NULL,我希望有一个选择选项“全部”。提交此选项时,它将被视为空数据。如果我用数据填充表单,并且此域为NULL,则也应该预先选择此选项。
我已经试过了我能想到的一切,但我不能弄清楚这个。有什么主意吗?

pbossiut

pbossiut1#

如果我没有理解错的话,您应该设置placeholder选项:
https://symfony.com/doc/current/reference/forms/types/choice.html#placeholder
如果我用数据填充表单,并且此字段为NULL,则也应该预先选择此字段。
现在,这可以通过FormEvents来实现,在本例中就是SUBMIT表单事件
请参阅有关表单事件的文档:
https://symfony.com/doc/current/form/dynamic_form_modification.html

相关问题