Symfony: разделите EmbedRelations в форме по идентификаторам - PullRequest
0 голосов
/ 04 апреля 2011

Я редактирую продукт и его текущие свойства в форме с помощью embedRelation ('ProductProperty'). Пока все хорошо. Диаграмма E / R здесь http://d.pr/1N7R

Однако теперь я хочу разделить форму и показать наборы атрибутов на разных вкладках AJAX в соответствии с его SetID. Я все еще хочу иметь одну кнопку «Сохранить», но это не критично, если мне нужно иметь несколько. Как я могу это сделать?

В моем _form.php я выполняю наборы, но не могу получить SetID для объекта формы ProductProperty. Я поступаю неправильно?

Я использую Symfony 1.4 и Doctrine 1.2. Вот моя схема.имл

Product:
  tableName: products
  actAs: 
    Timestampable: ~
    Sluggable:
      unique: true
      fields: [title]
      canUpdate: true
  columns:
    id:
      type: integer
      primary: true
      autoincrement: true
    category_id:
      type: integer
      notnull: true
    sku: 
      type: string(50)
      notnull: true
    title: 
      type: string(150)
      notnull: true
  relations:
    Category:
      foreignType: many
      foreignAlias: Products

Property:
  tableName: properties
  actAs:
    Timestampable: ~
    Sluggable:
      unique: true
      fields: [description]
      canUpdate: true
  columns:
    id:
      type: integer
      primary: true
      autoincrement: true
    set_id:
      type: integer
      notnull: true
    description: 
      type: string(100)
      notnull: true
  relations:
    Set:
      foreignType: many
      foreignAlias: Properties

Set:
  tableName: sets
  actAs:
    Timestampable: ~
  columns:
    id:
      type: integer
      primary: true
      autoincrement: true
    title:
      type: string(100)
      notnull: true

ProductProperty:
  tableName: product_properties
  actAs: 
    Timestampable: ~
  columns:
    product_id: 
      type: integer
      primary: true
    property_id: 
      type: integer
      primary: true
    value: 
      type: text
      notnull: true
  relations:
    Product:
      alias: Product
      foreignType: many
      foreignAlias: ProductProperties
      onDelete: cascade
    Property:
      alias: Property
      foreignType: many
      foreignAlias: PropertyProperties
      onDelete: cascade

1 Ответ

0 голосов
/ 06 апреля 2011

Мне удалось решить эту проблему с помощью dustin10 на IRC-канале #symfony (irc.freenode.net). Если кому-то еще это нужно, вот решение:

Мы добавили скрытое поле в ProductPropertyForm с SetID, который я пытался получить в моей форме:

$this->setWidget('property_set_id', new sfWidgetFormInputHidden());
$this->setDefault('property_set_id', $this->getObject()->getProperty()->getSetId());
$this->setValidator('property_set_id', new sfValidatorString());

Таким образом, я могу получить значение в моей форме с помощью:

$eForm['property_set_id']->getValue()

Теперь моя форма разделена на несколько вкладок с помощью jQuery :) Еще раз, большое спасибо dustin10 за его помощь.

...