簡體   English   中英

symfony2選擇表格有效

[英]symfony2 choice form valid

我有一個簡單的smyfony2形式,有一個選擇元素。 當我選擇“kerosin”或“diesel”時,表單將無法驗證,這是正確的。 當我不選擇三個選項中的任何一個並將表單提交為空時,$ form-> validate()將返回true,但它不應該返回true。 有任何想法嗎? 使用所需的HTML5對我來說不是一個解決方案。

這是我的Form AbstractType:

public function buildForm(FormBuilderInterface $builder, array $options)
{

    // Form erzeugen
    $builder->add('treibstoff', 'choice', array(
            'choices' => array(
                    'kerosin' => 'form.quiz1.kerosin',
                    'benzin' => 'form.quiz1.benzin',
                    'diesel' => 'form.quiz1.diesel',
                ),
            'multiple' => false,
            'expanded' => true,
            'label' => ' '
        ))
        ->getForm();
}

public function setDefaultOptions(OptionsResolverInterface $resolver)
{

    // Validierung erzeugen
    $collectionConstraint = new Collection(array(
        'treibstoff' => array(
                new Choice(array(
                    'choices' => array('benzin'),
                    'message' => 'form.quiz.falscheantwort',
                    'strict' => true
                )
            )
        )
    ));

    $resolver->setDefaults(array(
        'validation_constraint' => $collectionConstraint
    ));
}

public function getName()
{ 
     ...

驗證的工作方式如下:

    if($Request->getMethod() == "POST") {
        $form->bind($Request);
        if($form->isValid()) {
            echo "valid";

提前致謝。

編輯:

我改變了像建議的setDefaultOptions並添加了NotBlank。 這對我有用:

public function setDefaultOptions(OptionsResolverInterface $resolver)
{

    // Validierung erzeugen
    $collectionConstraint = new Collection(array(
        'treibstoff' => array(
            new Choice(array(
                    'choices' => array('benzin'),
                    'message' => 'form.quiz.falscheantwort',
                    'strict' => true,
                )
            ),
            new NotBlank()
        )
    ));

    $resolver->setDefaults(array(
        'validation_constraint' => $collectionConstraint
    ));
}

您在setDefaultOptions僅為benzin設置了有效選項,但未根據需要指定該字段。 請注意,表單字段中僅required在以下位置設置HTML5驗證

另請注意,將required選項設置為true將不會導致應用服務器端驗證。 換句話說,如果用戶為該字段提交空白值(例如,使用舊瀏覽器或Web服務),則除非您使用Symfony的NotBlank或NotNull驗證約束,否則它將被接受為有效值。

因此,您還必須將NotBlank約束添加到treibstoff字段。

暫無
暫無

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

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