Symfony SonataAdmin使用布尔字段创建实体
我有这个实体,如果我创建这样的记录Symfony SonataAdmin使用布尔字段创建实体,symfony,symfony4,sonata-admin,Symfony,Symfony4,Sonata Admin,我有这个实体,如果我创建这样的记录 $synopsis = new Synopsis(); $synopsis->setPartOne("a"); $synopsis->setPartTwo("b"); $synopsis->setTitle("A"); $synopsis->setSubtitle("B"); $synopsis->setEnabled(false); $em->persist($synopsis); $em->flush(); 然
$synopsis = new Synopsis();
$synopsis->setPartOne("a");
$synopsis->setPartTwo("b");
$synopsis->setTitle("A");
$synopsis->setSubtitle("B");
$synopsis->setEnabled(false);
$em->persist($synopsis);
$em->flush();
然后我转到我的管理员,我看到启用字段为“否”,这是预期的
但是现在,如果我使用sonata admin new form字段,即使我选择enabled“no”,也会使用enabled=true创建记录。我真的不明白为什么会这样
这是我的SynopsisAdmin中的内容
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper->add('title', TextType::class);
$formMapper->add('subtitle', TextType::class);
$formMapper->add('partOne', TextAreaType::class);
$formMapper->add('partTwo', TextAreaType::class);
$formMapper->add('enabled', BooleanType::class);
}
这是在实体中定义启用字段的方式
/**
* @ORM\Column(type="boolean")
*/
private $enabled;
谢谢你的帮助
编辑:有趣的事实也一样,即使我在sonata视图列表中看到“否”,但当我转到表单视图时,我会看到“是”
我怀疑sonata核心功能中有错误。我认为您应该在表单字段中使用
复选框类型,而不是布尔类型
看起来是列表、显示和网格操作的布尔类型。
更新
要使用BooleanType,必须将“transform”选项设置为true
。
这会将布尔值转换为布尔类型中的“是/否”选项:
$formMapper
->add('enabled', BooleanType::class, [
'transform' => true
])
当你换掉BooleanType(例如“CheckboxType”)时,会发生同样的事情吗?@Jeroen看起来不会,它与CheckboxType一起工作,这对我来说很好。但是这仍然意味着BooleanType上有一个bug不要认为BooleanType应该用于formmapper…我们会看到的,我仍然将它作为bug发送到他们的github中,我会看到的。无论如何,谢谢你。