0

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 に新しい定義を追加するコードが間違っています。

4

1 に答える 1