我有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;