13

マップされていないフィールドを symfony2 フォーム タイプに追加します。

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

しかし、NotBlank() 制約が機能していません! タイプを「チェックボックス」から「テキスト」に変更した場合にのみ、期待どおりに機能します。では、どうすればチェックボックスを検証できますか? もちろん、「True()」、「EqualTo()」、および「Length(...)」制約も試しました。しかし、成功せずに。また、フィールドに対してさまざまな POST 値 (1/0、true/false、on/off...) を試しました。

symfony2のフォームフィールドのバリデーションに関して、チェックボックスフィールドとテキストフィールドの大きな違いは何ですか?

ありがとうステフ

4

2 に答える 2

16

NotBlank文字列が空でないことを検証します。使ってみてNotNull

IsTrueも機能する必要があります。

値が true であることを検証します。具体的には、これは値が正確に true であるか、正確に整数 1 であるか、または文字列 "1" であるかを確認します。この制約は、プロパティ (たとえば、登録モデルの termsAccepted プロパティ) に適用できます。

于 2013-08-12T05:31:17.257 に答える
10

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')));
}
于 2016-07-12T20:54:40.540 に答える