2

私は Zend_Form オブジェクトを扱うのに大忙しです。

新しい請求書の作成に使用するフォームを作成しています。 Zend_Form で作成するフォーム

上の画像でわかるように、これはページのさまざまな場所と HTML コードにいくつかの異なる入力フィールドを持つフォームです。

通常、これを行うにはデコレータを使用しますが、これは好ましい状況ではないと思います。

新しい HTML を挿入するボタンは、同じ名前で最後に [NUMBER] を付けた新しい入力フィールドを作成します (配列を作成します)。

ビュー スクリプトに手動でフィールドを追加するのが最善だと思います (擬似コード: echo Zend_Form_Text_Element->toHtml();..

これを適切に機能させる方法を誰かにアドバイスしてもらえますか?

4

1 に答える 1

2

ビュー スクリプト デコレータを使用する必要があります。ここに良いリンクがあります。

次の部分までスクロールします:例: ViewScript デコレータを使用した完全なカスタマイズ

以下は、ビュー スクリプトを使用して作成されたサンプル フォームです。

<h4>Please register with us!</h4>
<form action="<?= $this->escape($this->form->getAction() ?>"
      method="<?= $this->escape($this->form->getMethod() ?>">

<fieldset>
    <legend>Demographics</legend>
    <p>
        Please provide us the following information so we can know more about
        you.
    </p>

    <?= $this->form->age ?>
    <?= $this->form->nationality ?>
    <?= $this->form->income ?>
</fieldset>

<fieldset>
    <legend>User Information</legend>
    <p>
        Now please tell us who you are and how to contact you.
    </p>

    <?= $this->form->firstname ?>
    <?= $this->form->lastname ?>
    <?= $this->form->email ?>
    <?= $this->form->address1 ?>
    <?= $this->form->address2 ?>
    <?= $this->form->city ?>
    <?= $this->form->state ?>
    <?= $this->form->postal ?>
    <?= $this->form->phone ?>
</fieldset>

<?= $this->form->submit ?>
</form>

このようにして、フォームの html を完全に制御することができ、デコレータの地獄に苦しむ必要はありません :D

于 2012-05-21T14:34:29.883 に答える