0

Zend_Form を使用しています。次のように、すべてが 1 行にまとめられた、パスワードを忘れた場合のフォームを作成したいと思います。

label: [フィールド] [送信ボタン]

そして、すべてを単一の段落タグ内に配置したいと思います。段落タグをform タグに配置したいと思います。基本的に、Zend_Form のデフォルトの DL タグを P タグに置き換えたいと思います。ある程度はできますが、正確にはできません。

デフォルトを使用すると、次のようになります。

class Application_Form_Forgot {
    public function init() {
        // my fields, no special decorators...
    }
}

これにより、次の HTML が生成されます。

<form {the attributes} ><dl class="zend_form"> {the fields} </dl></form>

代わりに、次の HTML が必要です。

<form {the attributes} ><p> {the fields} </p></form>

これが私が試したことです:

class Application_Form_Forgot {
    public function init() {
        // my fields...

        $this->setDecorators(
            array(
                'FormElements',
                'Form',
                array('HtmlTag', array('tag' => 'p')),
            )
        );
    }
}

しかし、それはこの HTML を生成します:

<p><form {the attributes} > {the fields} </form></p>

段落タグはフォームを囲みます。正確には私が望むものではありません。

私も試しました:

  • DL タグを削除する方法について、StackOverflow や他の場所での一連の投稿をグーグルで検索して読んでください。どこかで答えを見逃していて、これが重複している場合はご容赦ください。
  • Zend のソースを読んで、それを行う方法を見つけます。DlDt Decorator を見つけましたが、それは要素にのみ適用され、フォームには適用されないようです。
  • 段落タグをフォームの外に置くことを理解して、私の人生を続けています。

誰かが私を正しい方向に向けることができますか?これが可能であれば?

ありがとう、フィリップ

4

1 に答える 1

1

あなたは近くにいました、あなたがしなければならなかったことを変えてください:

 $this->setDecorators(
     array(
         'FormElements',
         array('HtmlTag', array('tag' => 'p'))
         'Form',             
     )
 );

デコレーターが以前に存在していたものの「周り」をレンダリングすることで機能していると想像すると、この順序でフォーム要素がレンダリングされ、その周りに段落が配置され、その周りにフォームタグが配置されます。

于 2013-02-26T18:26:58.200 に答える