[英]Symfony2 choice (checkbox) in form always false
我對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
有人知道我在做什么不好嗎?
這不完全是Symfony2問題。 這是一個PHP問題。
您正在使用具有布爾值作為鍵的數組,但是PHP不支持該數組。 PHP自動將這些布爾值轉換為整數。
因此,當您定義選擇時,實際上是這樣定義它們:
$arr = [true => 'Yes', false => 'No'];
var_dump($arr);
該代碼塊將返回:
array(2) {
[1] =>
string(4) "Yes"
[0] =>
string(5) "No"
}
您可以嘗試在setIsActive
方法中自動將其setIsActive
為布爾值,但是我不知道它是否有效。
找到解決方案。 我在實體類中添加了nullable = false 。
/**
* @var boolean
*
* @ORM\Column(name="isActive", type="boolean", nullable=false)
*/
private $isActive;
現在可以了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.