簡體   English   中英

形式中的Symfony2選擇(復選框)始終為false

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM