1

各アイテムをフィルタリングして検証し、全体を検証して重複がないことを確認したいと考えています。コレクションには任意の量のテキスト入力があります。

    $this->add(array(
        'type' => 'Zend\Form\Element\Collection',
        'name' => 'aliasList',
        'options' => array(
            'label' => 'Alias',
            'count' => 2,
            'allow_add' => true,
            'target_element' => array(
                'type' => 'Zend\Form\Element\Text'
            )
        )
    ));

以下のコードを追加しようとしましたが、かなり苦労しました。明らかにうまくいきませんでした。などのオプションがあるかもしれないと期待していました'oneach' = true

    $inputFilter->add($factory->createInput(array(
        'name' => 'aliasList',
        'required' => false,
        'filters' => array(
            array('name' => 'StripTags'),
            array('name' => 'StringTrim'),
        ),
    )));

また、有効な URI のバリデーターを追加し、重複で失敗するつもりです。残念ながら、私は ZF2 を使用しているので、別の ZF2 s—u—f—f—e—r—e—r— 開発者が登場するのを長い間待つことになると思います。

4

2 に答える 2

3

これは 1:1 の比率では問題を解決しない可能性がありますが、コレクションをフィールドセットとして追加することで、この問題を回避することをお勧めします。ほとんどの場合、コレクションに追加するものはすべて異なるタイプであるため、論理的には別のフィールドセットにある必要があります。

したがって、そのアプローチを試してみてください。私はあなたがそのブログを知っていると思います.ここに非常に役立つリンクがあります.

 $this->add(array(
    'type' => 'Zend\Form\Element\Collection',
    'name' => 'categories',
    'options' => array(
        'label' => 'Please choose categories for this product',
        'count' => 2,
        'should_create_template' => true,
        'allow_add' => true,
        'target_element' => array(
            'type' => 'Application\Form\CategoryFieldset'
        )
    )
));

このようにして、フィールドセットからコレクション要素を追加すると、フィールドセットのinputFiltersとバリデーターが追加されます

public function getInputFilterSpecification() {}

Fieldset クラスから。

于 2012-08-24T06:15:18.983 に答える