SonataAdmin 使用布尔字段创建实体
SonataAdmin create entity with boolean field
我有这个实体,如果我创建这样的记录。
$synopsis = new Synopsis();
$synopsis->setPartOne("a");
$synopsis->setPartTwo("b");
$synopsis->setTitle("A");
$synopsis->setSubtitle("B");
$synopsis->setEnabled(false);
$em->persist($synopsis);
$em->flush();
然后我转到我的管理员,我看到 "no" 的启用字段是预期的。
但是现在,如果我使用 sonata admin 新表单字段,即使我选择启用 "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;
感谢您的帮助。
编辑:还有有趣的事实,即使我在奏鸣曲视图列表中看到“否”,但当我转到表单视图时,我看到的却是“是”。
我怀疑奏鸣曲核心功能有问题。
我认为您应该为表单字段使用 CheckboxType
而不是 BooleanType
。
看起来 BooleanType
是列表、显示和网格操作的补充。
https://symfony.com/doc/master/bundles/SonataAdminBundle/reference/field_types.html
更新
要使用 BooleanType,您必须将 'transform' 选项设置为 true
。
这会将您的布尔值转换为 BooleanType 中的 YES/NO 选项:
$formMapper
->add('enabled', BooleanType::class, [
'transform' => true
])
我有这个实体,如果我创建这样的记录。
$synopsis = new Synopsis();
$synopsis->setPartOne("a");
$synopsis->setPartTwo("b");
$synopsis->setTitle("A");
$synopsis->setSubtitle("B");
$synopsis->setEnabled(false);
$em->persist($synopsis);
$em->flush();
然后我转到我的管理员,我看到 "no" 的启用字段是预期的。
但是现在,如果我使用 sonata admin 新表单字段,即使我选择启用 "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;
感谢您的帮助。
编辑:还有有趣的事实,即使我在奏鸣曲视图列表中看到“否”,但当我转到表单视图时,我看到的却是“是”。
我怀疑奏鸣曲核心功能有问题。
我认为您应该为表单字段使用 CheckboxType
而不是 BooleanType
。
看起来 BooleanType
是列表、显示和网格操作的补充。
https://symfony.com/doc/master/bundles/SonataAdminBundle/reference/field_types.html
更新
要使用 BooleanType,您必须将 'transform' 选项设置为 true
。
这会将您的布尔值转换为 BooleanType 中的 YES/NO 选项:
$formMapper
->add('enabled', BooleanType::class, [
'transform' => true
])