2013-04-16 87 views
2

我有一個奇怪的問題,我的一個Zend_Forms:isValid()正確地聲明我的表單無效,但我沒有收到任何錯誤消息。這怎麼會發生?Zend_Form無效,但沒有錯誤信息

繼承人的代碼,這裏沒什麼特別的。 $data是發佈數據的數組。沒有文件發送時會出現問題。

$form = $this->getForm('Foto'); 
    if(!$form->isValid($data)) { 
     var_dump($form->getErrors()); die; 
     return false; 
    } 

getForm()初始化表格,如果沒有完成。表單本身非常簡單。

class Media_Forms_Foto extends Zend_Form 
{ 
    /** 
    * Initializer function. Setup forms fields. 
    */ 
    public function init() 
    { 
     $this->setName('add Image'); 
     $this->setAction('media/gallery/addImage'); 

     $this->addElement('Hidden', 'gallery', array(
      'filters' => array(), 
      'validators' => array('Digits'), 
      'required' => false, 
      'label'  => '', 
     )); 

     $this->addElement('File', 'foto', array(
      'required'  => true, 
      'destination' => ROOT_PATH .'public/upload/tmp/', 
      'label'   => 'Foto', 
      'validators' => array(
       new Zend_Validate_File_IsImage(array(
        'image/jpeg', 'image/gif', 'image/png' 
       )) 
      ), 
      'maxFileSize' => 2097152, 
     )); 

     $this->addElement('Submit', 'add', array(
      'required' => false, 
      'ignore' => true, 
      'label' => 'add Foto', 
     )); 

     $this->setAttrib('enctype', 'multipart/form-data'); 
    } 
} 

輸出:

array(3) { 
    ["gallery"]=> 
     array(0) { 
     } 
    ["foto"]=> 
     array(0) { 
     } 
    ["add"]=> 
     array(0) { 
     } 
} 
+0

使用'getErrorMessages'輸出任何內容嗎? – Ashley

+0

快速問題,您的$數據來自哪裏?你嘗試過輸出嗎?我通常這樣做: (來自控制器)$ this-> getRequest() - > getPost();爲了獲得發佈數據,我知道這是一個愚蠢的問題,但是你的zend_form看起來對我來說很直,所以我試圖尋找可能導致驗證不「工作」的其他問題。 – Chayemor

回答

-3

你使用jQuery插件的形式通過任何機會呢?如果是這樣,請嘗試使用iframe模式上傳文件:

var options = { 
    url: '/test/upload', 
    success: function(response) { 
    }, 
    beforeSubmit: disableSubmitButtons, 
    iframe: true, 
    dataType : 'json' 
}; 

$('#testForm').ajaxForm(options);