symfony - SonataAdmin 使用布尔字段创建实体
问题描述
我有这个实体,如果我创建这样的记录。
$synopsis = new Synopsis();
$synopsis->setPartOne("a");
$synopsis->setPartTwo("b");
$synopsis->setTitle("A");
$synopsis->setSubtitle("B");
$synopsis->setEnabled(false);
$em->persist($synopsis);
$em->flush();
然后我转到我的管理员,我看到启用的字段为“否”,这是预期的。
但是现在,如果我使用奏鸣曲管理新表单字段,即使我选择启用“否”,也会使用启用 = 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;
谢谢你的帮助。
编辑:有趣的事实,即使我在奏鸣曲视图列表中没有看到,当我进入表单视图时,我看到的是。
我怀疑奏鸣曲核心功能存在错误。
解决方案
我认为您应该使用 theCheckboxType
而不是BooleanType
Form 字段。
看起来像是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
])
推荐阅读
- c++ - cout 输出不是从左到右吗?
- sql-server - SQL Server CASE,选择表列
- javascript - Github 页面未显示网站内容和错误 404
- php - GD 库图像调整大小会降低质量
- python - 从 youtube api 复制代码后,我不确定从哪里继续
- angular - 在 Angular 应用程序中,我应该使用什么方法将普通用户的布局与管理员用户的布局分开
- regex - 复杂文件名的正则表达式
- javascript - 如何添加暂停,特别是在 JavaScript 中?
- c++ - C++ | 如何使用 Linux 从箭头键获取输入
- flutter - 例外:使用不包含导航器的上下文请求导航器操作