Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php symfony2选择表格有效_Php_Forms_Validation_Symfony - Fatal编程技术网

Php symfony2选择表格有效

Php symfony2选择表格有效,php,forms,validation,symfony,Php,Forms,Validation,Symfony,我有一个简单的smyfony2表单,其中有一个choices元素。当我选择“煤油”或“柴油”时,表格将不会生效,什么是正确的。当我不选择这三个选项中的任何一个并提交空表单时,$form->validate()将返回true,但它不应该返回true。有什么想法吗?使用HTML5对我来说不是一个解决方案 这是我的表单类型: public function buildForm(FormBuilderInterface $builder, array $options) { // Form e

我有一个简单的smyfony2表单,其中有一个choices元素。当我选择“煤油”或“柴油”时,表格将不会生效,什么是正确的。当我不选择这三个选项中的任何一个并提交空表单时,$form->validate()将返回true,但它不应该返回true。有什么想法吗?使用HTML5对我来说不是一个解决方案

这是我的表单类型:

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
,但未按要求指定字段。请注意,表单字段中的
必需
仅设置:

还请注意,将所需选项设置为true不会导致 要应用的服务器端验证。换句话说,如果用户 提交字段的空白值(使用旧浏览器或web 例如,服务),除非您 使用Symfony的NotBlank或NotNull验证约束

因此,您还必须向
treibstoff
字段添加约束