0

zend以下に示すように、テキスト入力フィールドとチェックボックスの配列を含むフォームがあります-

<input class="checkbox_Category" type="checkbox" name="tag[]" value="19"> somename1 <br/>
<input class="checkbox_Category" type="checkbox" name="tag[]" value="20"> somename2 <br/>
<input class="checkbox_Category" type="checkbox" name="tag[]" value="21"> somename3 <br/>

を使用して

$formObject->populate($formDataArray);

コントローラーでフォーム全体にデータを入力します。すべてのテキスト入力フィールドは正常に入力されているように見えますが、チェックボックスはそうではありません。$formDataArray の内部では、チェックボックスのデータは次の形式になっています

[タグ] => 配列 ( [0] => 20 [1] => 19 )

- [firstName] => 'somename' などの他のフォーム データと一緒に。

4

2 に答える 2

0

Zend_Form コードを実際に見ないと、これは非常に困難です。しかし、ほとんどの場合、Zend Framework の 'checkbox' 要素を 'multiCheckbox' 要素と間違える人を見てきました。私は知っています-少し混乱しています-しかし、チェックボックスはオン/オフの値を持つ単一のチェックボックスです。MultiCheckbox は複数の値を処理します - そしてそれはあなたが達成しようとしているものだと思います。上記の HTML を生成して動作させる簡単なフォームをお見せしましょう。

class Application_Form_Test extends Zend_Form
{
    public function init()
    {
        $this->setMethod('post');

        $multiOptions = array(
            19 => 'somename1',
            20 => 'somename2',
            21 => 'somename3'
        );

        $this->addElement('multiCheckbox', 'tag', array(
            'multiOptions'=>$multiOptions
        ));

        $this->addElement('submit', 'submitbutton');
    }
}

さて、次のようなものを使用すると...

$form->populate($this->getRequest()->getPost());

コントローラーでは、期待どおりに入力されます。

お役に立てれば!

于 2013-05-18T15:20:55.310 に答える