【问题标题】:Multiple File Upload Validation Message Problem多文件上传验证消息问题
【发布时间】:2019-01-12 00:51:02
【问题描述】:

Cake3.6:

我正在验证允许上传多个文件的表单字段:

$this->Form->input('listing_images. ', ['type' => 'file', 'multiple' => 'multiple']);

我有一个自定义验证提供程序,可以正确验证多个图像:

$validator ->add('listing_images', 'listing_images', [
      'rule' => [
           'dimensions', [
                'min' => ['w' => 100, 'h' => 100],
                'max' => ['w' => 1600, 'h' => 1600]
           ]
       ],
       'message' => 'Maximum image size is 1600 x 1600 pixels',
       'provider' => 'custom'
]);

问题是当验证失败时,验证错误不会出现在字段下方。如果文件只上传单个文件并且名称为“listing_images”,则会出现验证错误。

为什么它不能用于多个?

【问题讨论】:

    标签: validation cakephp cakephp-3.x multiple-file-upload


    【解决方案1】:

    虽然它可能部分工作,但不支持您使用的尾随点语法(尾随空格只会让事情变得更糟),表单助手将无法根据该名称找到字段。

    您可以使用name 选项根据多文件上传 HTML 输入的要求指定带有尾括号的名称,同时传递表单助手可以理解的常规字段名称:

    echo $this->Form->control('listing_images', [
        'type' => 'file',
        'name' => 'listing_images[]',
        'multiple' => 'multiple',
    ]);
    

    【讨论】:

    • 你太棒了。我一定尝试过其他所有组合。所以我完全理解,该字段的哪个属性将该字段与验证规则联系起来,它是“id”,因为通过调用字段“listing_images”并覆盖名称,我可以看到“id”仍然是;listing_images是否需要验证才能触发?
    • @AlanA (HTML) 属性与它无关,字段名称必须简单匹配/指向实体属性名称,例如foo.0.bar 将匹配/评估为$entity->foo[0]->bar 用于值查找, 和 $entity->foo[0]->getError('bar') 用于错误查找。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-17
    • 2010-09-30
    • 1970-01-01
    • 2011-09-19
    • 2017-12-24
    • 2023-03-03
    相关资源
    最近更新 更多