0

Ubuntu 9.10 で Symfony 1.3.2 と Propel ORM を使用しています。

他の多くのテーブルがリンクされているユーザー プロファイル テーブルがあります (つまり、user_profile.id は他の多くのテーブルの FK です。

私のデータベーススキーマは次のようになります。

user_profile:
  _attributes: { phpName: UserProfile }
  id: ~
  guard_id:  { type: integer, foreignTable: sf_guard_user, foreignReference: id, required: true }
  address:   { type: longvarchar, required: true }

vehicle_type:
  _attributes: { phpName: VehicleType }
  id: ~
  name: { type: varchar(32), required: true }


user_vehicle:
  _attributes: { phpName: UserVehicle }
  id: ~
  user_id:  { type: integer, foreignTable: user_profile, foreignReference: id, required: true }
  vehicle_type: { type: integer, foreignTable: vehicle_type, foreignReference: id, required: true }
  license_plate:     { type: varchar(16), required: true }


user_child:
  _attributes: { phpName: UserChild }
  id: ~
  user_id:  { type: integer, foreignTable: user_profile, foreignReference: id, required: true }
  gender:   { type: boolean, required: true }
  name:     { type: varchar(32), required: true }

ユーザー プロファイル オブジェクトにリンクする他のオブジェクトをユーザー プロファイル フォームに埋め込みたいので、ユーザー プロファイル フォームで CRUD を実行すると、関連するオブジェクト (UserVehicle、UserJob など) も同時に CRUD になります。ユーザー プロファイル オブジェクトとして)。

次の方法を示す簡単なスニペットが必要です。

  1. さまざまな関連オブジェクト (つまり、UserVehicle、UserChild) を UserProfile フォームに埋め込みます。
  2. 操作が実行されているときに、さまざまな関連オブジェクトを作成/更新/削除します (ユーザーは 0-N を超える車両またはそれらに割り当てられた子を持つことができることに注意してください)
4

2 に答える 2

3

ドキュメントを読んだことがありますか?:

// lib/form/doctrine/ProductForm.class.php
public function configure()
{
  $subForm = new sfForm();
  for ($i = 0; $i < 2; $i++)
  {
    $productPhoto = new ProductPhoto();
    $productPhoto->Product = $this->getObject();

    $form = new ProductPhotoForm($productPhoto);

    $subForm->embedForm($i, $form);
  }
  $this->embedForm('newPhotos', $subForm);
}

作成/削除/更新の部分については、この記事が役立つ場合があります。

于 2010-02-25T17:17:30.647 に答える
0

私のニーズに合った公式のアプローチが見つかりませんでした。私はまったく異なるアプローチを開発しました。私が以前働いていた会社では、この新しいアプローチをプロダクションで使用していましたが、より柔軟でシンプルであることがわかりました。重要な概念は、「Symfony の Form クラスを使用しないでください。フォームの埋め込みが非常に簡単な作業であることがわかるでしょう」ということです。これがフォームの埋め込みに役立つことを願っています。

于 2011-07-03T17:45:03.723 に答える