我正在使用CakePHP 2.3.8并尝试使用CakePHP验证图像上传,但Cake给我提供了验证问题。我知道正在触发验证,因为如果我从验证规则中删除特定的扩展名,我会收到验证错误消息。 (EX:从验证列表中删除'jpg',然后上传一个.jpg文件,然后显示错误消息)。CakePHP的表单验证问题
'image' => array(
'extension' => array(
'rule' => array('extension', array('png','jpg','jpeg', 'gif')),
'message' => 'Only jpeg, png and gif images are supported',
)
),
下面是我在我的控制器
if($this->request->is('post')){
$this->Setting->set($this->request->data);
if($this->Setting->validates() == true){
$this->Session->setFlash('success');
}
else{
$this->Session->setFlash('fail');
}
}
如果我上传,说image2.jpg我得到的“失败”的消息,但我不得到验证消息。如果我从扩展列表中删除'.jpg'并上传一个jpg文件,那么我会收到'失败'消息和验证错误消息。
当调试这个 - >请求 - >数据,我得到以下响应
array(
'Setting' => array(
'id' => '5', //hidden field
'current_image' => '2_52547d56-1d80-410e-b739-09cecbdd56cb', //hidden field
'image' => array(
'name' => 'IMG_4385.JPG',
'type' => 'image/jpeg',
'tmp_name' => '/Applications/XAMPP/xamppfiles/temp/phpilL54j',
'error' => (int) 0,
'size' => (int) 1608456
)
)
)
正如我所说,当我请从验证规则的JPG的扩展,该消息显示。我知道这可能是“发现”发布数据中的图像。
编辑 - 我想通了这个问题
我的工作视图有2种形式。一个用于提交图像,另一个用于文本输入。在设置模型中,我对文本输入和图像进行了验证。尽管是完全独立的形式,但它似乎试图验证那些文本输入,但它没有在发送的数据中为它们接收任何信息。我改变验证电话只验证图像,它的工作
if($this->Setting->validates(array('fieldList' => array('image'))) == true){...
cakephp的版本是什么? –
对不起,它是2.3.8。我会将其添加到我的帖子 – user1852176
好的。我发布了一个awnser。如果它不起作用,请发布你的'debug($ this-> request-> data)' –