Zend framework2 如何向ZF2中字段集中的元素动态添加验证器和过滤器?
我在ZF2表单中使用字段集。我可以向元素添加验证器和过滤器:Zend framework2 如何向ZF2中字段集中的元素动态添加验证器和过滤器?,zend-framework2,zend-form,Zend Framework2,Zend Form,我在ZF2表单中使用字段集。我可以向元素添加验证器和过滤器: $form->getInputFilter()->add(array( 'name' => 'element_name', 'required' => true, 'filters' => array( array('name' => 'Zend\Filter\StringTrim'), ), )); 但是,如果元素在字段集中
$form->getInputFilter()->add(array(
'name' => 'element_name',
'required' => true,
'filters' => array(
array('name' => 'Zend\Filter\StringTrim'),
),
));
但是,如果元素在字段集中,我怎么做呢?
我试图这样做:
$form->getInputFilter()->add(array(
'fieldset_name' => array(
'name' => 'element_name',
'required' => true,
'filters' => array(
array('name' => 'Zend\Filter\StringTrim'),
),
),
));
但是它不起作用只需在字段集中直接添加验证器,而不是在表单中 只需将验证程序直接添加到字段集中,而不是表单中 您应该在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
)
);
}
}
您应该在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
)
);
}
}
应首选@Fouad Fodail方法。
InputSpecification
应该在FieldsetClass
本身声明。但是,如果您需要按照您的要求执行此操作,它也很简单:
$form->getInputFilter()
->get('fieldset_name')
->get('element_name')
->add($additionalFilter);
应首选@Fouad Fodail方法。
InputSpecification
应该在FieldsetClass
本身声明。但是,如果您需要按照您的要求执行此操作,它也很简单:
$form->getInputFilter()
->get('fieldset_name')
->get('element_name')
->add($additionalFilter);
Zend\Form\Fieldset中没有方法getInputFilter()。Zend\Form\Fieldset中没有方法getInputFilter()