symfony boolean field into form

don*_*ame 13 php symfony

我在实体中有这个字段:

/**
* @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)


vim*_*uth 7

非常感谢您的解决方案,但这对我不起作用。我使用 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) 字段