0

いくつかのフィールドを使用してZend_Fromを作成しました。私がやりたいのは、それらを段落の中に入れて、自然に流れるようにすることです。例として

Danny had [select with 1-10] apples and James had [select with 3-20] pears.

私はこれをしようとしてきました

$elem= $this->registerForm->getElement('danny');

しかし、出力では、この要素の値はフォームに含まれなくなります。また、これはでできると思いましたがZend_Form_SubForm()、例が見つかりませんでした。

4

2 に答える 2

3

このためのサブフォームは必要ありません。特別なデコレータがいくつかある、またはいくつかのデコレータが削除された通常のフォームだけです。

<?php

class Your_Form_Example extends Zend_Form
{

    public function init() {
        // wrap the select tag in a <span> tag, hide label, errors, and description
        $selectDecorators = array(
            'ViewHelper',
            array('HtmlTag', array('tag' => 'span'))
        );

        $this->addElement('select', 'danny', array(
            'required' => true,
            'multiOptions' => array('opt1', 'opt2'),
            'decorators'   => $selectDecorators // use the reduced decorators given above
        ));
    }
}

次に、フォームをレンダリングするビュースクリプトを示します...

<form method="<?php echo $form->getMethod() ?>" action="<?php echo $form->getAction() ?>">
  <p>Danny had <?php echo $form->danny ?> apples and James had <?php echo $form->james ?> pears.</p>
  <p>More stuff here...</p>

  <?php echo $form->submit ?>
</form>

これは次のような結果になるはずです

<p>Danny had <span><select name="danny" id="danny"><option>opt1</option><option>opt2</option></select></span> apples and James had .....</p>

フォームの出力を適切に保つために、エラー、説明、およびラベルのデコレータは削除され、レンダリングされません。したがって、フォームのエラーをチェックする場合、select要素と一緒にレンダリングされないため、select要素にエラーがある場合は、フォームの上または別の場所に表示する必要があります。

お役に立てば幸いです。

于 2011-10-18T20:59:06.327 に答える
0

単一のフィールドでも使用できます。formコントローラからビューに送信する変数は、オブジェクトの配列です。->演算子を使用して単一のフィールドを取得できます。たとえば、

danny had <?php echo $this->form->danny; ?>apples and james had <?php echo $this->form->james; ?>.......

注意$this->form->danny$this->form->jamesてください、そしてあなたの中に配置するあなたのhtml要素ですzend form

于 2011-10-19T12:10:46.210 に答える