2012-10-11 69 views
4

我試圖在Zend框架來驗證用戶註冊表單2.如何在Zend Framework 2中驗證註冊表單?

更具體如何驗證電子郵件,ZF1我可以這樣做:

$email->setValidators(array(new Zend_Validate_EmailAddress())); 

我想知道如果我可以叫什麼類似這樣。

另外我想知道如何驗證兩個領域,需要像密碼字段和密碼驗證相同。

我想,當我說if($form->isValid())..這將檢查所有驗證getInputFilter()方法。

我一直在考慮看看ZfcUser模塊,但是,現在,我無法理解很多,因爲我沒有上ZF2是如何工作的

任何想法,也許一個簡單的例子,一個十足的把握?

感謝

回答

8

你看了official tutorial怎麼看新ZF2 Form組件的工作原理?

在很高的層次上,您需要一個Form對象和一個Filter對象一起工作。 Filter對象是您放置過濾器和驗證程序的位置。但是,如果您在Form中使用EmailAddress類型的表單元素,則它會自動添加正確的驗證程序。有更多的信息在manual

我最近爲Zend做了一個網上研討會,你應該能找到on this page

+0

ZF1和ZF2中各組件的用法是否有所不同?我的意思是,如果我們需要將我們的應用程序遷移到ZF2,我們是否需要更改整個代碼? –

+0

@NandakumarV Refactor =很可能。 ZF2是一個完整的'野獸。 – RockyFord

+0

某些位顯着不同。表格就是其中之一。 –

1

我弄明白了。

驗證器是多維數組,每個數組都有一個名稱和一些選項。它可能在一開始會有點有線注意到它,但在ZF2太多的配置是這樣

看到密碼的例子:

$inputFilter->add($factory->createInput([ 
      'name' => 'password', 
      'required' => true, 
      'filters' => [ ['name' => 'StringTrim'], ], 
      'validators' => [ 
       [ 
        'name' => 'StringLength', 
        'options' => [ 
         'encoding' => 'UTF-8', 
         'min'  => 6, 
         'max'  => 128, 
        ], 
       ], 
      ], 
     ])); 

     $inputFilter->add($factory->createInput([ 
      'name' => 'password_verify', 
      'required' => true, 
      'filters' => [ ['name' => 'StringTrim'], ], 
      'validators' => [ 
       array(
        'name' => 'StringLength', 
        'options' => array('min' => 6), 
       ), 
       array(
        'name' => 'identical', 
        'options' => array('token' => 'password') 
       ), 
      ], 
     ])); 

注意到,在PHP 5.3>數組可以寫在array()[],在上面的例子中,我混淆了他們沒有特別的原因。