我使用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'),
),
),
));
但它不起作用
答案 0 :(得分:3)
应该首选@Fouad Fodail的方法。 InputSpecification
应在FieldsetClass
本身声明。但是,如果你需要这样做,就像你问的那样简单:
$form->getInputFilter()
->get('fieldset_name')
->get('element_name')
->add($additionalFilter);
答案 1 :(得分:2)
您应该在Fieldset类中实现getInputFilterSpecification()方法并制作 那里需要配置。这是必要的,因为fleldset的表单从引用的fleldsets的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
)
);
}
}
答案 2 :(得分:1)
只需在字段集中直接添加验证器,而不是在表单中。