0

私は zend フレームワークを初めて使用しますが、最初のステップを成功させました。これまで、モデルの単一のレコードをフォーム フィールドにマッピングする Zend_Forms をいくつか作成しました。ケースごとにフォームクラスでフォームを処理しました。これは今まで非常にうまく機能しています。

今、製品に機能を割り当てなければならない状況があります。機能と製品は私のアプリケーションの一部です。フィーチャはデータベースの 3 つのテーブルに格納されています。3 番目のテーブルには、フィーチャごとに 1 つのレコードがあります。

  • 1 つ目は、機能グループの名前が保存される機能グループです。すべての機能を機能グループに割り当てる必要があります。

  • 2 番目のテーブルは機能テーブルです。このテーブルには、機能グループへの外部キーと機能の名前があります。

  • 3 番目のテーブルは、機能を製品に接続するある種の多対多の関係です。このテーブルには、製品のこの固有の機能に対するオプションの値 (2 つの外部キー以外) を含む追加フィールドがあります。

例: 製品の重量が 4.78 kg の場合、値「4.78」が 3 番目のテーブルに保存され、ラベル「%s kg の重量」が 2 番目のテーブルに保存されます。機能グループは、最初のテーブルに保存されている「物理属性」のようなものである可能性があります。

簡単に言えば、私の問題は、1 つのフォームで複数のデータベース レコードを作成および編集する必要がある場合をどのように処理するかということです。計画では、機能をテーマごとにグループ化する機能ごとに、それぞれに多くのチェックボックスを備えたフォームを用意する予定です。すべてのチェックボックスには、オプションの値を入力するための追加のテキスト フィールドが必要です。

4

3 に答える 3

0

Zend_Form を拡張して独自の要素を作成することができます。

DB に接続して属性 (機能と製品) を取得するクラスを作成できるようになります。

My_Form_Element_Features&クラスを作成したと仮定すると、、 などの基本クラス メソッドを実行して使用My_Form_Element_Productsできます。$features = new My_Form_Features();getValues()populate()

そこを見て開始することができます:

--

コメントに答えるには、次を使用できます。

Zend_Form::setElementsBelongTo($array):

詳細については、Zend_Form Advanced マニュアル ページを参照してください。

于 2010-02-17T13:42:46.000 に答える
0

Zend_Form を拡張したカスタム フォーム クラスを作成し、それをクラスに使用することができます。モデルの構成インスタンスを取り込み、そのモデルに基づいてフォーム入力を構成できます。コントローラーでフォームを検証した後、次のことができます

$values = $form->getValues();

その配列を使用して、モデルを再度設定します

于 2010-02-17T13:42:54.940 に答える
0

フォーム クラス内にサブフォーム (Zend_Form_SubForm) を作成してみてください。これにより、異なるテーブルのフィールドを分離できます。編集の場合、コントローラでツリー テーブルからすべてのデータを取得するときに、テーブルに対応するサブフォームを作成できます。

于 2010-02-18T01:57:26.823 に答える