即时通讯在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。
答案 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 rule,isValidExtension
,您可以使用: -
public $validate = array(
'image' => array(
'extension' => array(
'rule' => array(
'isValidExtension',
array('png','jpg','jpeg'),
false
),
'message' => 'Only images files'
)
)
);
将false
作为规则的第三个参数传递(如上所述)可确保仅在上传文件时检查规则。