symfony - 自动生成的模型表单中的附加字段

时间:2011-11-13 12:08:24

标签: symfony1 doctrine field

我的应用程序中有3个表。 - eventevent_categoryevent_category_connection。这是两个第一个表之间的多对多关系。我要做的是将sfWidgetFormDoctrineChoice的类别添加到EventForm(通过Symfony自动生成 - 学说模型),在保存事件后我将能够自动添加新事件之间的连接现有类别。

$this->widgetSchema['event_category_id'] = new sfWidgetFormDoctrineChoice(array(
  'model' => 'EventCategory', 
  'add_empty' => false, 
  'multiple'=>"true",
  'expanded'=>true));
$this->setValidator('event_category_id', new sfValidatorDoctrineChoice(array(
  'model' => 'EventCategory', 
  'required' => false)));

这是我添加到自动生成EventForm的内容。据我所知,在创建操作期间,新对象通过$form->getObject()->save()函数保存。这是我收到错误的地方(未知记录属性/相关组件)。

任何建议如何处理此操作。这就是我想要的代码:

在一个动作中 - >保存对象 - >获取新对象的ID - >保存类别和新对象之间的多对多关系。

Krzycho。

1 个答案:

答案 0 :(得分:0)

首先你必须做$form->save(),然后保存你的关系(这是一种方法,可能有很多方法可以实现):

  protected function processForm(sfWebRequest $request, sfForm $form)
  {
    $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
    if ($form->isValid())
    {    
      $obj = $form->save();

      $this->saveRelations($request, $obj);
      // save the event_category objects in an array: $event_categories
      // $obj->EventCategory = $event_categories;
      // $obj->save();
    }
    // ...
  }