2

Zend_Form で生成されたフォームに新しいdhtml コンテンツを動的に追加する最良の方法は何ですか? 例として、フォームが次のように作成されたとします。

class formUser extends Zend_Form {
    public function __construct( $options = null ) {
        parent::__construct( $options );

        $page1 = new Zend_Form_Element_Text( 'page1' );
        $page1->setLabel( 'Page 1' );

        $submit = new Zend_Form_Element_Submit( 'submit' );
        $this->addElements( array( $page1, $submit ) );
    }
}

ここで、フォームは「page1」と呼ばれる 1 つの要素のみを作成しますが、ビューに「追加」ボタンを挿入して、page2、page3、page4 などの要素を動的に生成し、それをZend_Form ?

これが私が話している効果です

これは私ではありませんが、彼は同じ質問をしており、おそらくより適切に表現しています

私の場合、それは実際には子供と親の関係です。このあたりでは、0 人から 15 人の子供を産む可能性があり、私は眉をひそめません。

ありがとう!

4

4 に答える 4

2

今はコーディングの詳細を説明する時間はありませんが、次のようにします。

フォームの構造 (データだけでなく) を編集可能にしたいので、インスタンス化してセッションに保存する必要があります。

追加の HTML マークアップを生成するだけでなく、JavaScript でサーバーに Ajax コールバックを行う必要があります。「追加」ボタンがクリックされたときにこのように呼び出されるアクションはZend_Form、セッション内のインスタンス ストアを変更します。Ajax 呼び出しは、挿入される追加のマークアップ、またはフォーム マークアップ全体の新しいバージョンのいずれかを返すことができます。

Zend_Form前者の場合、ブラウザーの表示がサーバー上の表現と一致するようにマークアップが挿入されるようにするのは、JavaScript コード次第です。後者の場合 (フォーム全体が返される場合)、ユーザー入力は Ajax 呼び出しで転送する必要があります。そうしないと、フォームが新しいバージョンに置き換えられたときに失われます。

于 2009-02-06T13:41:54.817 に答える
1

「cg」回答の実装は、ここでよく説明されています。 http://www.jeremykendall.net/2009/01/19/dynamically-adding-elements-to-zend-form/

于 2009-03-22T16:10:19.753 に答える
0

これを解決するために特別なZendのものは必要ないと思います-投稿したjavascriptの例では、必要な場所にhtmlが追加され、送信すると、投稿されたページにすべてのデータが表示されます。同じ。開始するときは、使用する命名スキームに必ず従ってください。配列を使用することもできます

$element->setIsArray(true);

このようなHTMLを作成するには

name="foo[]" id="foo"
于 2009-02-04T05:21:51.817 に答える