0

Zend Framework 2 で作成しているフォームに特定の柔軟性を統合するために、Fieldset に追加のフィールドを追加する必要があります。

これをメインフォームのメソッドで実現したい。

フィールドセットに入力フィールドを追加することは問題ありませんが、問題は入力の検証とフィルタリングから始まります。フィールドセットがフォームに追加され、getInputFilterSpecification セクションが解析された後、フィールドセットのフィルターを実装する方法がわかりません。

悲しいことにうまくいかない私の現在のアプローチは次のとおりです。

public function addAdditionalField($data, $filterData = null) {
    $fieldset = $this->get('additional');
    $fieldset->addElement($data);

    if ($filterData !== null) {
        $factory = new InputFactory();
        $filter = $this->getInputFilter();

        var_dump($filter->add($factory->createInputFilter(array('additional' => $filterData))));
    }
}

この問題について何か考えはありますか?

4

1 に答える 1

0

非常によく似たタスクで、構成配列を使用しました。ログインフォームからのこの例:

src/モジュール/フォーム/LoginForm.php

if($this->moduleSettings['enablCaptchaOnLogin'] === TRUE)
{
   $captcha = new Element\Captcha('captcha');
   $captchaAdapter = new Captcha\Dumb();
   $captchaAdapter->setWordlen(7);
   $captcha->setCaptcha($captchaAdapter)
           ->setAttribute('title', 'Help to prevent SPAM');
   $this->add($captcha);
}

in / Module / view / module / login / index.phtml has() 関数を使用しました:

if ($form->has('captcha'))
    echo $this->formRow($form->get('captcha')) . PHP_EOL ;

これが役立つことを願っています。http://framework.zend.com/apidoc/2.2/classes/Zend.Form.Form.htmlを確認してください

于 2013-07-29T11:59:05.777 に答える