【问题标题】:Assert File not validating断言文件未验证
【发布时间】:2012-12-15 07:14:25
【问题描述】:

我已按照文档中的说明使用 Doctrine 处理文件上传。

图像上传工作正常,但是当我上传其他文件类型时,即使我已正确设置 $file 属性上的注释,它也只会让文件上传,如下所示:

/**
 * @Assert\File(
 *     maxSizeMessage = "L'image ne doit pas dépasser 5Mb.",
 *     maxSize = "5000k",
 *     mimeTypes = {"image/jpg", "image/jpeg", "image/gif", "image/png"},
 *     mimeTypesMessage = "Les images doivent être au format JPG, GIF ou PNG."
 * )
 */
public $file;

【问题讨论】:

  • 是的,但它不会触发任何错误。
  • 那么你有几个选项 1.) 一切都好 2.) 你不运行断言 3.) 那些运行但你不处理结果。从您到目前为止显示的代码和您到目前为止给出的描述中,一切皆有可能。因此,这需要您首先进行进一步的故障排除。
  • 如何运行/处理断言?
  • 这取决于,手册中对此进行了概述。通常通过实体验证。此外,您在这里拥有公共财产可能是一个问题。谁建议你公开的?这通常不在手册中(你已经写了你跟着它)。
  • 还要检查 MimeTypeGuesser 是否真的有效。看起来您已经发现它不是according to your other question。也许这是你的问题?

标签: php file symfony mime-types assert


【解决方案1】:

{"image/jpg", "image/jpeg", "image/gif", "image/png"}, 是有效的 json 吗?因为这对我来说看起来不像是一个有效的 json(json 中的对象由 key=>value 对组成。)。如果 json 解码失败,则可能整个断言没有得到应用。我对教义了解不多,所以我可能错了。

【讨论】:

【解决方案2】:

我刚刚发现问题出在 Product 实体上。我在 Product 表单中添加了多个图像,但忘记将 Valid 断言放在 Product 实体上的 $images 属性中,如下所示:

/**
 * @ORM\ManyToMany(targetEntity="PS\StockBundle\Entity\Image", cascade={"persist"})
 * @Assert\Valid()
 */
private $images;

我在博客上写了一篇关于此的文章https://web.archive.org/web/20141004165731/http://www.ennazk.com:80/validate-subforms-in-symfony2/#.Wdt9mBNSwnU

谢谢。

【讨论】:

猜你喜欢
  • 2020-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-12
  • 2011-08-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多