2014-07-10 37 views
0

我使用了很多嵌套的Fieldset,並且想知道是否可以爲特定的字段集設置required = false以便在其中沒有任何錯誤時拋出錯誤(以及保持我的表格驗證)?Zend 2 Form Fieldset可選驗證

例如,這是我的UserFieldset:

-> {User Fieldset} 
-----> Name 
-----> Email address 
-----> [other user fields...] 
-----> {Avatar Fieldset} 
----------> File 
----------> [other avatar fields...] 
-----> {other fieldsets...} 

在我的情況我想有時候逼我的用戶添加一個化身,有時不..

當我想強制是沒有問題的,我的Avatar字段集中的輸入文件會引發錯誤並阻止驗證過程。

但是,當我希望我的用戶只需註冊並最終設置其頭像時,我該怎麼做?

謝謝你的幫助。

回答

0

您可以修改使用setValidationGroup()方法驗證的元素。

documentation states

的Zend \形式提供了一個代理方法到底層InputFilter輸入的setValidationGroup()方法,使我們能夠僅形式元素的子集執行[驗證]

這可以在控制器或者新工廠內完成;例如:

// Module.php 
public function getFormElementConfig() 
{ 
    return array(
     'factories' => array(
      'MyModule\Form\AvatarRegistrationFieldset' => function($fem) { 

      $fieldset = new Form\AvatarFieldset(); 

      // Include the name of the elements you WANT to be validated 
      $fieldset->setValidationGroup('foo', 'file'); 

      return $fieldset; 
      } 
    ), 
); 
} 
+0

如果我使用setValidationGroup我的頭像字段(註冊頁面),將沒有更多的驗證,我將無法從它那裏得到的數據,如果我最終訪問者上傳文件.. –

+0

@ VincentCaggiari您可以將文件元素保留爲可選字段,然後*僅在註冊時將其包含在驗證組中。 – AlexP