24

私たちの新しいプロジェクトでは、Zend Framework 2 と Dojo 1.8 の使用を開始しました。ZF2 には、完全に書き直されたフォーム モジュールがあり、1 対多の関係のための新しい CollectionElement が特徴です。私が見つけた UI に関しては、その dgrid が (エディター列プラグインを使用して) そのような関係に最適であるため、FormCollection、FormRow、および FormElement ビュー ヘルパーの拡張を開始して、目的の dgrid をレンダリングできるようにしました。dgrid ウィジェットの行ごとの入力名を設定できないことに気付くまでは、すべて問題ありませんでした。

私はZF2 ドキュメントのフォーム コレクションの保管から始めました。コレクションの入力要素には、次のような配列のような名前があることがわかります

order[products][0][name]
order[products][0][price]
order[products][1][name]
order[products][1][price]

一方、dgrid の構成は列ベースであるため、次のような列定義を使用できます。

editor({
    field: "_dojo_textbox_505ee3a390d705_26717315", 
    label: "Name",
    editorArgs: {
        name: "order[products][{index}][name]",
    }
}, TextBox)

この列定義は、すべての行に同じウィジェット名を設定することを定義しますが、これは ZF2 コレクション データ形式の要件では機能しません。

私も試したのは、次のように列に名前を付けることです。

order[products][]

これは機能しますが、目的の形式を許可しません

order[products][][name]

おそらく、次のようなデータを投稿する方法があります。

order[products][name][]

後で変換しますが、解決策は正しくありません。これに加えて、再利用可能なコードを作成しようとしており、フォームごとのデータ変更を避けたいと考えています。

私はデータ変換のための onSubmit/onClick イベント処理を回避するために非常に努力しているので、2 つの可能な解決策があります。コレクション

残念ながら、これらの解決策のいずれかを実行する方法についてのアイデアが尽きてしまいました。

これは私の現在の質問と多少関連しているので、補足質問としてここに置きます: Dojo との 1 対多のフォーム インターフェイスに、この UI ソリューション以外に何を使用していますか?

4

1 に答える 1

1

Zend フレームワーク バージョン 2 では、「Zend\Form」自体に新しい要素を「コレクション要素」に動的に追加する機能があります。

ここで確認できます

于 2012-12-23T16:38:42.987 に答える