2013-08-22 18 views
1

我使用ZF2表單中的字段集。我可以添加驗證器和過濾器到元素:如何將動態驗證器和過濾器添加到ZF2的字段集中的元素中?

$form->getInputFilter()->add(array(
    'name' => 'element_name', 
    'required' => true, 
    'filters' => array(
     array('name' => 'Zend\Filter\StringTrim'), 
    ),    
)); 

但是,如果元素是在fieldset中,我該怎麼做? 我試着這樣做:

$form->getInputFilter()->add(array(
    'fieldset_name' => array(
     'name' => 'element_name', 
     'required' => true, 
     'filters' => array(
      array('name' => 'Zend\Filter\StringTrim'), 
     ), 
    ),     
)); 

但它不工作

回答

3

@Fouad Fodail的方法應該是首選。應該在FieldsetClass本身聲明InputSpecification。但是,如果你需要這樣做,就像你問的一樣簡單:

$form->getInputFilter() 
    ->get('fieldset_name') 
    ->get('element_name') 
    ->add($additionalFilter); 
1

只需直接添加驗證的字段集,而不是形式。

+0

在Zend \ Form \ Fieldset中沒有方法getInputFilter() – Ildar

2

您應該在您的Fieldset類中實現getInputFilterSpecification()方法,並在此處設置 所需的配置。這是必要的,因爲fleldset的表單從引用的fleldset的getInputFilterSpecification()方法接收其所有「InputFilter」規範。

use Zend\Form\Fieldset; 
use Zend\InputFilter\InputFilterProviderInterface; 

class MyFieldset extends Fieldset implements InputFilterProviderInterface 
{ 
    public function __construct() 
    { 
     //... 
    } 

    public function getInputFilterSpecification() 
    { 
     return array(
      'element_name' => array(
       'filters' => array(), 
       'validators' => array(), 
       'properties' => array(), 
       'required' => true 
      ) 
     ); 
    } 
} 
相關問題