2013-07-25 60 views
2

我是新來的zend框架2,我有一個問題比較工廠支持的形式兩個輸入。我的情況如下:zend框架2 - 使用驗證器比較2個輸入?

我想比較兩個輸入,例如,$startDate$endDate。我想驗證$startDate總是小於$endDate。我如何去做這件事?例如:

$inputFilter->add($factory->createInput(array(
       'name'  => 'startDate', 
       'required' => true, 
       'validators' => array(
        array(
         'name' => 'LessThan', 
         'options' => array(
          'max'  => $endDate, 
         ), 
        ), 
       ), 
      ))); 

僅供參考,我正在關注的專輯教程,並在classTable.php創建$inputFilter

謝謝

+0

或者是通過其他方式來實現?謝謝... – tekmin

+0

你可以用類似於這個答案的方式使用回調驗證器 - > http://stackoverflow.com/questions/17529906/zf2-validation-how-can-i-validate-dependent-fields/17532467# 17532467 – Crisp

+0

非常感謝。它的工作! – tekmin

回答

4

感謝Crisp!我用類似的東西解決了它:

$inputFilter->add($factory->createInput(array(
      'name'  => 'startDate', 
      'required' => true, 
      'name'  => 'Callback', 
       'options' => array(
        'message' => array( 
         Callback::INVALID_VALUE => 'Invalid period is given.', 
        ), 
        'callback' => function($value, $context=array()) { 
         return $value < $context['endDate']; 
        }, 
       ), 
      ))); 
+1

關鍵'名字'被提及兩次 –

0

上面的答案可能是正確的,但可能會出現一些語法或回調錯誤可能會發生。原因是,我們通常在Models InputFilters中使用回調驗證功能,而不是在表單定義部分(從Zend Framework 2.2.1版起)。

這回呼腳本部分應該進來型號 - InputFilters,請參考以下鏈接:https://stackoverflow.com/a/19263037/2190889

按照以下鏈接參考,日期驗證部分完美的作品。