Symfony 1.4表单不会使用embedRelation保存外键

时间:2012-01-12 15:08:24

标签: php symfony-1.4 doctrine-1.2

情况如下:

我有模型A和模型B.模型A有模型B的外键(modelb_id)。

两种型号都有自己的形式。我将模型B的表单嵌入到表单A中。

class ModelAForm extends ....{

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

问题:

当我保存表单时,它会保存ModelB,但它不会更改ModelA中外键的值(在模型A中,modelb_id仍为空)。

任何人都有线索?

2 个答案:

答案 0 :(得分:0)

我总是遇到embedRelation()的问题,直到找到一个名为ahDoctrineEasyEmbeddedRelationsPlugin的插件解决了我对表单嵌入问题的 ALL

我认为最好使用此插件,而不是一遍又一遍地调试嵌入。 :)

答案 1 :(得分: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);
            }
   }