SonataAdmin表单不需要EntityType

时间:2018-04-11 22:41:55

标签: symfony sonata-admin

我的实体与其他实体之间存在可选关系(nullable=true)。

但是当我使用required = false时,Sonata创建的表单只有<select>,只包含我的所有实体,而不是空值。

使用经典的symfony表单,required = false允许不选择任何实体

/**
 * @param FormMapper $formMapper
 */
protected function configureFormFields(FormMapper $formMapper)
{

    $formMapper
        ->add('otherEntity', EntityType::class, [
            'class'    => OtherEntity::class,
            'required' => false,
        ])
    ;
}

你知道为什么吗?

2 个答案:

答案 0 :(得分:2)

首先,检查您的实体是否允许您的关系为空值。在实体中(注意JoinColumn):

/**
 * @var OtherEntity
 *
 * @ORM\ManyToOne(targetEntity="AppBundle\Entity\OtherEntity")
 * @ORM\JoinColumn(nullable=true)
 */
private $otherEntity;

第二次为表单映射添加占位符选项:

/**
 * @param FormMapper $formMapper
 */
protected function configureFormFields(FormMapper $formMapper)
{

    $formMapper
        ->add('otherEntity', EntityType::class, [
            'class'    => OtherEntity::class,
            'required' => false,
            // This is what sonata requires
            'placeholder' => 'Please select entity' 
        ])
    ;
}

答案 1 :(得分:0)

我刚刚发现Sonata正在添加一个小十字架来删除当前选定的关系

它太小了,我昨晚没有看到它......

enter image description here

非常感谢你回答M. Kebza!