表单中的Symfony2选项(复选框)始终为false

时间:2014-07-24 21:14:59

标签: php forms symfony

我遇到Symfony2表单选择字段(复选框)的问题。即使我将其检查为真,提交后始终为假

实体类:

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

有人知道我做得不好吗?

2 个答案:

答案 0 :(得分:0)

这不完全是Symfony2问题。这是一个PHP问题。

您正在使用具有布尔值作为键的数组,但PHP并不支持它。 PHP会自动将这些布尔值转换为整数。

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

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

此代码块将返回:

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

您可以尝试使用setIsActive方法自动转换为布尔值,但我不知道它是否可行。

答案 1 :(得分:0)

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

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

现在可行。