<?php
public function validationDefault(Validator $validator)
{
$validator->add('image', [
'uploadError' => [
'rule' => 'uploadError',
'message' => __d('Message', 'The logo upload failed.'),
'last' => true
],
'mimeType' => [
'rule' => array('mimeType', array('image/gif', 'image/png', 'image/jpg', 'image/jpeg')),
'message' => __d('Message', 'Please upload images only (gif, png, jpg).')
],
'fileSize' => [
'rule' => array('fileSize', '<=', '1MB'),
'message' => __d('Message', 'Logo image must be less than 1MB.')
],
])
->allowEmpty('image');
上述验证码出错了。
$validator
->requirePresence('owner', 'create')
->notEmpty('owner');
return $validator;
}
}
?>
Whats wrong with my validation code? when i comment the validation in image field it will save into database.,
但是当我不发表评论时,它总是会说&#34;无法验证mimetype是否缺少文件&#34;
答案 0 :(得分:0)
试试这个
'image' => array(
'uploadError' => array(
'rule' => 'uploadError',
'message' => __d('Message', 'The logo upload failed.'),
'last' => true,
'allowEmpty' => true
),
'mimeType' => (
'rule' => array('mimeType', array('image/gif', 'image/png', 'image/jpg', 'image/jpeg')),
'message' => __d('Message', 'Please upload images only (gif, png, jpg).'),
'allowEmpty' => true
),
'fileSize' => (
'rule' => array('fileSize', '<=', '1MB'),
'message' => __d('Message', 'Logo image must be less than 1MB.'),
'allowEmpty' => true
),
)
您也可以使用extension
规则来验证文件类型,如下所示:
'image' =>array(
'extension' => array(
'rule' => array('extension',array('gif', 'png', 'jpg', 'jpeg'),
'message' => __d('Message', 'Please upload images only (gif, png, jpg).')
)
),
答案 1 :(得分:0)
我猜是其中一条规则是抛出异常(可能是mimeType
),因为上传过程中出错。很多php级配置控制$ _FILES数组,其中一个设置是upload_max_filesize。因此,依赖于文件可用性的任何文件功能都将无法正常工作。
无。这是预期的行为,无论前一个验证规则是否失败,都会运行所有验证规则。因此,在您的情况下,将识别上传错误,但验证仍将继续执行下一个规则,然后由于没有上传文件而导致失败。
可以使用最后一个选项禁用此行为。将规则标记为最后将导致在该规则失败时停止验证该字段。
'uploadError' => [
'rule' => 'uploadError',
'message' => __d('clients', 'The logo upload failed.'),
'last' => true
],