Zendフレームワークで、フォーム内のコードを含むフィールドセット内の新しいフォーム要素にinputfilterを追加するにはどうすればよいですか? 次のケースでは、一般的なフォーム要素のセットと、フィールドセット クラスでそれらの要素の入力フィルタを定義し、フィールドセットをフォームに追加しています。その後、フォーム コードのフィールドセットに 1 つ以上の新しいフォーム要素を追加します (フォーム ファクトリによって要素を動的に追加する準備をするために、フィールドセットではなくフォームで行っています)。私が問題を抱えているのは、追加要素に新しい inputfilter 定義を追加することです。
私のフィールドセットで:
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
}
}
この例では、追加の要素がフィールドセットに追加されますが、inputfilter に新しい定義を追加するコードが間違っています。