Формы Symfony 1.4 не сохраняют внешний ключ с помощью embedRelation - PullRequest
0 голосов
/ 12 января 2012

Вот ситуация:

У меня есть Модель A и Модель B. Модель A имеет внешний ключ (modelb_id) для Модели B.

Обе модели имеют свою форму. Я встраиваю форму для модели B в форму A.

class ModelAForm extends ....{

  public function configure(){
    unset($this['modelb_id']);
    $this->embedRelation('ModelB');
  }
}

Проблема:

Когда я сохраняю форму, она сохраняет ModelB, но не изменяет значение внешнего ключа в ModelA (в модели A, modelb_id все еще пуст).

У кого-нибудь есть подсказка?

Ответы [ 2 ]

0 голосов
/ 19 марта 2013

Если вы хотите обновить связанные объекты при сохранении одной формы. Вы можете переопределить метод BasesfForm :: doUpdateObject.

В вашем Form.class.php добавьте что-то вроде:

 /* If you want to add some logic before updating or update other associated
  * objects, this is the method to override.
  *
  * @param array $values An array of values
  */
  public function doUpdateObject($values) {
    // Handle the normal stuff that this method does
      $this->getObject()->fromArray($values, BasePeer::TYPE_FIELDNAME);
      $obj = $this->getObject();

    // and, get the needed value
      $val = $obj->getDesiredPropertyValue();

    // use the value to update the related thing
      foreach ($obj->getRelatedObjects() as $related)
            {
              $related->setColumnNamedThing($val);
            }
   }
0 голосов
/ 12 января 2012

У меня всегда были проблемы с embedRelation(), пока я не нашел плагин с именем ahDoctrineEasyEmbeddedRelationsPlugin , который решил ALL моих проблем с встраиванием форм.

Я считаю, что лучше использовать этот плагин , чем снова и снова отлаживать ваши встраивания. :)

...