2012-05-14 54 views
0

我目前正在用戶上傳一個MS Word文檔,我正在檢查XML中的一個版本。控制器當前會檢查isValid(),然後點擊一個執行解析和提取的庫(因爲word是一個存檔)。現在,由於它在技術上已經「有效」,所以我需要通過庫再次檢查有效性。 Zend Framework中的最佳行爲是什麼?從Kohana的土地Zend Framework - 驗證上傳內容(二級驗證)

乾杯;)

+0

創建您自己的驗證器。 –

+0

好吧,我做到了。儘管我有使用addValidator(new My_Check)擴展zend_form的形式;雖然,文檔的提取發生在庫中,並且發生在isValid之後。在這種情況下,它將不得不發生兩次,這不是我想要做的。 – wesside

+0

我正在檢查文件中的實際數據以進行驗證。它需要作爲二級驗證發生。首先,所有的基本項目都是正確的(它的文件,小於N字節等)。然後,go..ok現在是有效的..我需要做一個二級驗證 – wesside

回答

2

我想我明白你在找什麼。
您目前正在調用對錶單有效,您的文件通過表單驗證(正確的大小,擴展名...)現在您需要解壓縮文件並驗證內容。

我打算假設您已經擁有驗證內容的代碼,並且只是想了解如何在控制器中使用它。
'

public function anyAction() { 

$form = new Form(); 
//test for $_POST 
if ($this->getRequest()->isPost(){ 
    //Test form for validity 
    if ($form->isValid($this->getRequest()->getPost()){ 
     //will receive file upload (unless disabled in element) and filter form values, 
     //based on filters attached to the elements. 
     $data = $form->getValues(); 
     //placeholder for whatever code is required to validate contents of file 
     $validateFile = new MyFileValidator(); 
     //test for valid file contents 
     if ($validateFile->isValid($data['file']){ 
      //Do some Stuff 
     } 
     //if file contents is not valid, display form and populate values with unfiltered values 
     $form->populate($this->getRequest()->getPost()); 
    } 
    //if form is not valid, it should stay populated and display element errors 
    } 
//if not post send form to view 
$this->view->form = $form; 
} 

本示例應提供這種類型的問題的基本控制器的工作流程。我希望它能解決你的問題。

+0

感激不盡! – wesside