У меня есть простая форма, в настоящее время состоящая из одного набора полей. Теперь я хочу, чтобы поля были отфильтрованы и проверены. Поэтому я реализовал метод getInputFilterSpecification()
в моем Fieldset
учебный класс:
...
class FooFieldset extends \Zend\Form\Fieldset
{
public function __construct($name = null, $options = array())
{
parent::__construct($name, $options);
$this->setHydrator(new ClassMethods(false));
$this->setObject(new Buz());
$this->setLabel('Baz');
$this->add(array(
'type' => 'text',
'name' => 'bar',
'options' => array(
'label' => _('bar')
)
));
}
public function getInputFilterSpecification()
{
return [
'bar' => [
'required' => true,
'filters' => [
0 => [
'name' => 'Zend\Filter\StringTrim',
'options' => []
]
],
'validators' => [],
'description' => _('bar lorem ipsum'),
'allow_empty' => false,
'continue_if_empty' => false
]
];
}
}
и добавил Fieldset
к Form
:
...
class BuzForm extends \Zend\Form\Form
{
public function __construct($name = null, $options = array())
{
parent::__construct($name, $options);
$this->setAttribute('role', 'form');
$this->add(array(
'name' => 'baz-fieldset',
'type' => 'Buz\Form\BazFieldset'
));
$this->add(array(
'type' => 'submit',
'name' => 'submit',
'attributes' => array(
'value' => 'preview'
)
));
}
}
Проблема в том, что InputFilter
технические характеристики полностью игнорируются. Я установил точку останова в FooFieldset#getInputFilterSpecification()
и, конечно, даже проверил это с die()
— метод не вызывается.
Что здесь не так и как заставить его работать правильно?
Других решений пока нет …