簡體   English   中英

驗證復選框未映射到 symfony2 形式的實體

[英]Validate checkbox not mapped to entity in a symfony2 form

我將一個非映射字段添加到 symfony2 表單類型:

$builder->add('terms','checkbox', array('mapped' => false,
        'constraints' => array(new NotBlank())));

但是 NotBlank() 約束不起作用! 只有當我將類型從“復選框”更改為“文本”時,它才能按預期工作。 那么如何驗證復選框呢? 當然,我也嘗試過 'True()'、'EqualTo()' 和 'Length(...)' 約束。 但沒有成功。 我還為該字段嘗試了不同的 POST 值(1/0、true/false、on/off...)。

關於symfony2中的表單字段驗證,復選框字段和文本字段之間的最大區別是什么?

謝謝史蒂夫

NotBlank驗證字符串不為空。 嘗試使用NotNull

IsTrue也必須有效。

驗證一個值是否為真。 具體來說,這會檢查該值是否完全正確,是否准確為整數 1,或者是否准確為字符串“1”。 此約束可以應用於屬性(例如,注冊模型上的 termAccepted 屬性)。

Symfony 3.0 的更新答案

use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Validator\Constraints\IsTrue;

// ...
{
    $builder->add('terms', CheckboxType::class, array('constraints'=>new IsTrue(array('message'=>'Needs to be clicked')));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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