form中的Symfony2选项(复选框)总是false


Symfony2 choice (checkbox) in form always false

我有Symfony2表单选择字段(复选框)的问题。在提交后总是false,即使我将其检查为true。

实体类:

/**
 * @var boolean
 *
 * @ORM'Column(name="isActive", type="boolean")
 */
private $isActive;

表单生成器类:

...->add('isActive')

和var_dump当我提交表单与字段未选中或选中,结果仍然是一样的:

private 'isActive' => boolean false

当我像这样改变表单构建器类时:

...->add('isActive', 'choice', ['choices' => [true => 'Yes', false => 'No']])

则适用于整数值:

private 'isActive' => int 1
有谁知道我做错了什么吗?

这不是Symfony2的问题。这是一个PHP问题。

你正在使用一个布尔值作为键的数组,但是PHP不支持。PHP会自动将这些布尔值转换为整数。

所以,当你定义你的选择时你实际上是这样定义它们的:

$arr = [true => 'Yes', false => 'No'];
var_dump($arr);

这个代码块将返回:

array(2) {
    [1] =>
    string(4) "Yes"
    [0] =>
    string(5) "No"
  }

您可以尝试在setIsActive方法中自动转换为布尔值,但我不知道它是否会工作。

找到解决方案。我添加了nullable=false到我的实体类

/**
 * @var boolean
 *
* @ORM'Column(name="isActive", type="boolean", nullable=false)
 */
private $isActive;