在zend框架中,如何使用表单中的代码为字段集中的新表单元素添加输入过滤器?在下面的例子中,我在 fieldset 类中定义了一组常见的表单元素和一个 inputfilter,并将 fieldset 添加到表单中。之后,我将一个或多个新的表单元素添加到表单代码中的字段集中(我在表单中而不是在字段集中执行此操作,以准备通过表单工厂动态添加元素)。我遇到的问题是为其他元素添加新的输入过滤器定义。
在我的字段集中:
class myFieldset extends Fieldset implements InputFilterProviderInterface
{
public function init()
{
// add form elements
}
public function getInputFilterSpecification()
{
$inputFilter['myFormElement'] = [
'required' => true,
'filters' => [[ ... ],],
'validators' => [[ ... ],],
'allow_empty' => false,
'continue_if_empty' => false,
];
// more filters
return $inputFilter;
}
}
以我的形式:
class myForm extends Form
{
public function __construct()
{
// ...
// add elements from fieldset
$this->add([
'name' => 'myFieldset',
'type' => 'Application\Form\Fieldset\myFieldset',
'options' => [
'use_as_base_fieldset' => true,
],
]);
// add new element
$myFieldset = $this->get('myFieldset');
$myFieldset->add([
'name' => 'additionalElement',
'type' => 'Zend\Form\Element\ ... ',
'attributes' => [],
'options' => [],
]);
// update inputfilter
$input = new Input('additionalElement');
$input->setRequired(false);
$currentInputFilter = $this->getInputFilter();
$currentInputFilter->add($input);
$this->setInputFilter($currentInputFilter);
// submit buttons
}
}
在此示例中,附加元素被添加到字段集中,但我的代码错误,无法将新定义添加到输入过滤器。