2011-06-20 4 views
0

symfonyベースのWebアプリケーションを開発しています。私は多くのモデル(ノートパソコン、ネットブック、Ipad、タブレット....これらのすべてのモデルを継承した製品モデルから)。これらのモデルに基づいて私はまた、フォーム(LaptopForm、NetbookForm ...など)を持っています。私はモデル名を取得し、テンプレートに割り当てる私のアクションクラスで :symfonyの動的モデルフォームテンプレート

$modelForm = $this->modelName.'Form'; 

$this->form = new $modelForm(); 

はその後、私のテンプレートで、私は<?php echo $form ?> ..Thereが、それはHTMLテーブル内のすべてのフィールドとラベルを印刷しても問題ありませんことをやります。

しかし私の問題は、テンプレートを2つの部分に分割したいということです。一般的なフィールドセットと特別なフィールドセット。一般的なフィールドセットで私は製品モデルフィールド(名前、価格...)を表示したい。私はこの特別なフィールドをどのように扱うことができますか?

ありがとうございます!

答えて

1

特殊なフォームクラス(ベースクラスを変更しない)で手動で管理できます。
おそらく、sfWidgetFormSchemaを使用して:
http://www.symfony-project.org/forms/1_4/en/A-Widgets#chapter_a_sfwidgetformschema あなたは、ウィジェットに名前を付ける必要があり、このような、フォームテンプレートでstanhdardの再利用のために、「一般」と「特別な」答えを

<?php echo $form['general'] ?> 
<?php echo $form['special'] ?> 
+0

感謝それはとても役に立ちます。もう一つ質問があります。コマンドラインからこれらのモデルを生成すると、基本クラスのフィールドは自動的に "$ this-> setWidgets(...)"に設定されます。おかげで – qasanov

+0

私はそれが不可能であることを肯定しています。しかし、私は、symfonyを自動的に作成したモデルフィールドが "$ general = sfWidgetFormSchema(array( 'name' => new fWidgetFormInputText()、...)多分あなたはProductformクラスの継承システムを使って、デスクトップのような他の形式で継承しなければならないものを試すことができます... – dxb

関連する問題