【问题标题】:How to validate a file upload in Symfony2 (ImageValidator)?如何在 Symfony2 (ImageValidator) 中验证文件上传?
【发布时间】:2012-04-15 18:41:03
【问题描述】:

我目前正在开发一个使用最新版本 Symfony2 的应用程序。我在验证包含文件上传字段的表单时遇到了一些问题。

我的表单代码看起来像这样(缩短):

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilder;
use Symfony\Component\Validator\Constraints\MinLength;
use Symfony\Component\Validator\Constraints\Collection;

    class EventEditForm extends AbstractType
    {
        public function buildForm(FormBuilder $builder, array $options)
        {
            $builder->add("name", "text", array("required" => true));
            //....
            $builder->add("image", "file", array("property_path" => false, "required" => false));
        }

        public function getDefaultOptions(array $options)
        {
           $collectionConstraint = new \Symfony\Component\Validator\Constraints\Collection(array(
                'image' => new \Symfony\Component\Validator\Constraints\Image()
                ));

            $options["validation_constraint"] = $collectionConstraint;
            return $options;
        }

        public function getName()
        {
            return 'editeventform';
        }
    }

正如您在此处看到的,我想确保上传的文件是图像。我使用这样的形式:

$form = $this->createForm(new \Trancefans\AdminBundle\Form\EventEditForm(), $event);

但运行此代码时出现以下错误:

数组或 Traversable 和 ArrayAccess 类型的预期参数,对象 给定

我真的不知道我的错在哪里。我完全按照文档中的描述做了。有人可以帮助我吗? :-)

顺便说一句:图像不由事件实体表示,但表单的所有其他字段都是。我使用教义。

【问题讨论】:

    标签: validation symfony symfony-forms


    【解决方案1】:

    Symfony\Component\Validator\Constraints\CollectionValidator 要求它验证的数据是一个数组或实现了 ArrayAccess 和 Traversable 的对象。

    确保 $event 实例的类定义实现 ArrayAccess 和 Traversable,以便在调用 CollectionValidator::validate() 时,它可以访问您的值以相应地验证它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-18
      • 1970-01-01
      • 2012-10-23
      • 1970-01-01
      • 1970-01-01
      • 2019-10-28
      • 2019-04-30
      • 2012-08-28
      相关资源
      最近更新 更多