CakePHP的表单验证问题

时间:2013-10-27 00:40:22

标签: php validation cakephp

我正在使用CakePHP 2.3.8并尝试使用CakePHP验证图像上传,但Cake正在给我带来验证方面的麻烦。我知道验证正在被触发,因为如果我从验证规则中删除了特定的扩展名,那么我会收到验证错误消息。 (EX:从验证列表中删除'jpg',然后我上传一个.jpg文件,然后显示错误信息)。

'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文件,则会收到“失败”消息和验证错误消息。

当我调试this-> request->数据时,我得到以下回复

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扩展名时,会显示消息。我知道它可能“找到”发布数据中的图像。

编辑 - 我发现了问题

我正在使用的视图有两种形式。一个用于提交图像,一个用于文本输入。在设置模型中,我验证了文本输入和图像。尽管是完全独立的表单,但它似乎试图验证那些文本输入,但它没有在发送的数据中接收任何信息。我将验证调用更改为仅验证图像并且工作正常

if($this->Setting->validates(array('fieldList' => array('image'))) == true){...

1 个答案:

答案 0 :(得分:0)

我想出了答案。无论如何,谢谢你的提示。

我正在使用的视图有两种形式。一个用于提交图像,一个用于文本输入。在设置模型中,我验证了文本输入和图像。尽管是完全独立的表单,但它似乎试图验证那些文本输入,但它没有在发送的数据中接收任何信息。我将验证调用更改为仅验证图像并且工作正常

if($this->Setting->validates(array('fieldList' => array('image'))) == true){
    //do stuff
}