2011-08-18 22 views
1

必要があります:動的にフォームを構築する能力symfonyの1.4フォームクリエーター

構造(シンプルなアイデアではない実際の構造)

Admin: Form Assignment, where you create what field you want your new Form to have 
FrontEnd: Where the New form will be implemented (this is the root of this question) 
FronEnd Storage: When the New form is filled out the data points are written to a set of tables 

アイデアは十分に簡単で、管理者に移動し、フィールドを選択し、FIELDTYPE、および必要なラベル

IE

Field Name:*Enter a specific field name, like f_name or email 
FieldType: [Text, TextArea, Password, Radio, DatePicker, CheckBox, Select, etc] 
Label: What to display on the resulting form, f_name = First Name, etc 

は、それから私は、私はそれを記入し、データはFrontEndのストレージテーブルに格納されて出来上がり、新しいフォームが生成されFrontEndのページをヒット。

これはどのようにこれを達成するためのアイデアです、私はすでに管理セクションを行っている、それは動的にビルドし、フロントエンドを適切にバインドしているから私はアドバイスをしたいです。

現在、私の考えは、単に私がこれを感じるフィールドごとにsfForm要素と適切なバリデータを構築する巨大な醜いswitch文であるシェルフォーム(管理領域に入力されたものから与えられたフィールド)

を作ることですそれを行うための「間違った」方法です、私はプラグイン 'spyFormBuilderInterface2Plugin'を見つけました。これは古いもので、propelではなくdoctrine用にビルドしていますが、これは私が何をしているかの基本的な考え方です。では、どうやってやるの?

私は動的に現在のフォームにフォームを追加するために見ているわけではない、私はすでにこれを行うことができ、それは私の管理]セクションで実装されている正確に何に注意してください、私はAのデータを取る必要があり、プログラムで

答えて

1
まったく新しいフォームを作成してください

私はあなたが言ったように、あなたが描いたようなものを作りました。

私は、フォームを定義するモデルFormDefinitionを持っていて、FormFieldのコレクションを持っています。各フォームフィールドはwidget_class,widget_options,validator_classおよびvalidator_optionsです。

私は、myFormというカスタムを持っていますが、そのコンストラクタにはFormDefinitionが必要です。 setup()myFormの場合、すべてのフィールドをループしてウィジェットとバリデーターをインスタンス化します。

私たちのソリューションでは、すべてのフォームデータを別々のタブに保存する必要がありました。私のmyFormsfDoctrineFormから拡張され、バックエンドには適切なDoctrineメソッドを呼び出すだけで(php)モデルとデータベース定義を作成/更新するロジックがあります。しかし、EAVストアを作成することもできます。

関連する問題