我的实体与其他实体之间存在可选关系(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,
])
;
}
你知道为什么吗?
答案 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)