Symfony:文件约束错误

时间:2014-09-22 21:38:45

标签: forms symfony validation

->add('shots','file', array(
    'multiple' => true,
    **'constraints' => array(
        new Constraints\Image(array(
            'maxSize' => '10M',
            'allowSquare' => false,
            'allowPortrait' => false,
            'minRatio' => 1.43,
            'maxRatio' => 2.4
        )),
    )**
))

这是具有整合形式验证器的symfony表单的一部分。但我得到一个我不明白的错误:

UnexpectedTypeException: Expected argument of type "string", "array" given

如果没有标记的部分,则可以使用。我检查了表单约束的引用,但我没有得到解决方案......

2 个答案:

答案 0 :(得分:8)

这是Symfony\Component\Validator\Constraints\FileValidator,它会引发您的异常。 期望您的表单值可以转换为字符串,但得到数组......

您应该尝试使用All约束作为File的周围约束,如下所示:

->add('shots','file', array(
    'multiple'    => true,
    'constraints' => array(
        new All(array(
            'constraints' => array(
                new Image(array(
                    'maxSize'       => '10M',
                    'allowSquare'   => false,
                    'allowPortrait' => false,
                    'minRatio'      => 1.43,
                    'maxRatio'      => 2.4
                ))
            )
        ))
    ))
))

请参阅http://symfony.com/fr/doc/current/reference/constraints/All.html

答案 1 :(得分:0)

以这种方式尝试:

use Symfony\Component\Validator\Constraints\Image;
...
...
...
->add('shots','file', array(
    'multiple'    => true,
    'constraints' => array(
        new Image(array(
            'maxSize'       => '10M',
            'allowSquare'   => false,
            'allowPortrait' => false,
            'minRatio'      => 1.43,
            'maxRatio'      => 2.4
        )),
    )
))