2016-01-22 43 views
3

我想在ZF2的一個類上運行驗證。我遵循相冊示例,瞭解驗證器如何與表單一起工作,但是如何對數組運行它?以下是該示例的代碼。如何在沒有表單的模型上運行ZF2驗證?

$form->setInputFilter($album->getInputFilter()); 
$form->setData($request->getPost()); 
if ($form->isValid()) { 

在我的情況下,我沒有一個表單,但有一個數據我想交換到類的數組。我怎樣才能驗證這個數組?我如何運行isValid函數?我是否需要將數組綁定到一個新窗體,然後運行驗證?似乎會有更清晰的方式。

非常感謝, 中號

+0

看便知HTTP: //stackoverflow.com/a/24575074/949273 – tasmaniski

+0

@tasmani sk這個作品!非常感謝。我可以要求跟進,但我如何才能顯示信息?有沒有辦法填充幫助類(就像它在相冊示例中那樣)?他們使用,如果它是有效的,否則什麼都不做(重新加載帶有消息的頁面)。非常感謝。 – Matt

回答

3

您可以創建擴展到Zend\InputFilter\InputFilter

use Zend\InputFilter\InputFilter; 
class AlbumFilter extends InputFilter { 
    public function __construct() 
    { 
     $this->add(array(
       'name'  => 'title', 
       'required' => true, 
       'validators' => array(
        array(
         'name' => 'NotEmpty', 
         'options' => array(
          'messages' => array(
           NotEmpty::IS_EMPTY => 'Title is required.', 
          ), 
         ), 
        ), 
       ), 
      )); 
    } 

}

然後在您的控制器中的過濾器:

$AlbumFilter = $this->getServiceLocator()->get('AlbumFilter'); // assuming you have added AlbumFilter in your Module.php 
$AlbumFilter->setData($data); 
if ($AlbumFilter->isValid()) { 
    // do something 
} 
相關問題