2014-07-24 41 views
0

我有Symfony2表單選擇字段(複選框)的問題。在提交後,即使我將其檢查爲true,也是始終爲假Symfony2選項(複選框)的表單總是爲false

實體類:

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

找到解決方案。我在我的實體類中添加了nullable = false

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

現在,它的工作。

0

這不完全是一個Symfony2問題。這是一個PHP問題。

您正在使用具有布爾值作爲鍵的數組,但PHP不支持該數組。 PHP會自動將這些布爾值轉換爲整數。

所以,當你要定義你的選擇,你實際上是這樣定義它們:

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

此代碼塊將返回:

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

你可以嘗試自動轉換到布爾setIsActive方法,但我不知道它是否會起作用。

+0

感謝您的迴應,但它不能解決我的問題。 – fmstoun