我正在使用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)' –