我遇到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
有人知道我做得不好吗?
答案 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;
现在可行。