2012-01-12 1 views
0

Вот ситуация:Symfony 1.4 формы не сохраняет внешний ключ с embedRelation

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

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

class ModelAForm extends ....{ 

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

Проблема:

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

У кого-нибудь есть ключ?

ответ

0

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

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

0

Если вы хотите обновить связанные объекты при сохранении одной формы. Вы можете переопределить метод 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); 
      } 
    }