图像验证扩展验证仅在非空问题时

时间:2015-09-18 11:21:24

标签: php validation cakephp

即时通讯在cakephp中使用图像文件的验证规则,我想验证图片扩展名是否为空。 问题是,如果我没有给出图像,那么cakephp正在验证扩展名,因此它会给出验证错误“只有图像文件' 这是我用来验证图片的验证规则

image' => array(
            'notEmpty' => array(
                //'message' => 'Your custom message here',
                'allowEmpty' => true,
                'required' => false,
                //'last' => false, // Stop validation after this rule
                //'on' => 'create', // Limit validation to 'create' or 'update' operations
            ),
            'extension' => array(
                'rule' => array('extension', array('png','jpg','jpeg')),
                'message' => 'Only images files',
            ),

我使用此插件进行图片上传https://github.com/josegonzalez/cakephp-upload

1 个答案:

答案 0 :(得分:1)

您的notEmpty规则似乎没有做任何事情,因为您没有指定规则,因此可能会被删除。

您需要将'allowEmpty' => true添加到extension规则,以告诉Cake如果该字段为空则忽略该规则: -

public $validate = array(
    'image' => array(
        'extension' => array(
            'rule' => array('extension', array('png','jpg','jpeg')),
            'message' => 'Only images files',
            'allowEmpty' => true
        )
    )
);

<强>更新

CakePHP上传插件有own extension validation ruleisValidExtension,您可以使用: -

public $validate = array(
    'image' => array(
        'extension' => array(
            'rule' => array(
                'isValidExtension', 
                array('png','jpg','jpeg'), 
                false
            ),
            'message' => 'Only images files'
        )
    )
);

false作为规则的第三个参数传递(如上所述)可确保仅在上传文件时检查规则。