Пример того, как встраивать формы в Symfony - PullRequest
0 голосов
/ 25 февраля 2010

Я использую Symfony 1.3.2 с Propel ORM в Ubuntu 9.10.

У меня есть таблица профиля пользователя, с которой связано много других таблиц (то есть 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 также были то же время, что и объект профиля пользователя).

Мне нужен простой фрагмент, который покажет, как:

  1. Внедрение различных связанных объектов (например, UserVehicle, UserChild) в форму UserProfile
  2. Создание / обновление / удаление различных связанных объектов во время выполнения операции (обратите внимание, что пользователю может быть назначено более 0-N транспортных средств или детей

Ответы [ 2 ]

3 голосов
/ 25 февраля 2010

Читали ли вы документацию ?:

// 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);
}

Для части создания / удаления / обновления эта статья может оказать некоторую помощь.

0 голосов
/ 03 июля 2011

Я никогда не находил официальный подход подходящим для моих нужд. Я разработал совершенно другой подход. В компании, где я работал, мы использовали в производстве этот новый подход , считая его немного более гибким и простым. Ключевой концепцией является «не используйте класс Form Symfony, и вы обнаружите, что встраивание форм может быть очень простой задачей» Я надеюсь, что это поможет вам встраивать формы.

...