我在实体中有这个字段:
/**
* @ORM\Column(type="boolean")
*/
protected $done = 0;
Run Code Online (Sandbox Code Playgroud)
在数据库中它是tinyint(1).当我尝试将其添加到表单中时:
$builder
->add('done', 'checkbox')
Run Code Online (Sandbox Code Playgroud)
它抛出一个错误:
Unable to transform value for property path "done": Expected a Boolean.
Run Code Online (Sandbox Code Playgroud)
咦?不是布尔值吗?
sco*_*ico 22
0或1不是布尔值.它们是整数.在域模型中使用true/false.
/**
* @ORM\Column(type="boolean")
*/
protected $done = false;
Run Code Online (Sandbox Code Playgroud)
非常感谢您的解决方案,但这对我不起作用。我使用 symfony 4。这就是我完成的方式,
实体,
/**
* @ORM\Column(type="boolean")
*/
protected $done = 0;
public function getDone(): ?bool
{
return $this->done;
}
public function setDone(?bool $done): self
{
$this->done = $done;
return $this;
}
Run Code Online (Sandbox Code Playgroud)
表格类型,
->add('done', CheckboxType::class, array(
'required' => false,
'value' => 1,
))
Run Code Online (Sandbox Code Playgroud)
我需要添加 use CheckboxType 因为我调用了这个类。(使用 Symfony\Component\Form\Extension\Core\Type\CheckboxType;) 如果你运行 "php bin/console algorithm:migrations:diff" db 将添加 tinyint(1) 字段