embedForm保存问题 - Symfony

时间:2011-01-14 13:42:12

标签: symfony1 symfony-1.4 propel

我的架构如:

架构:

 article:
   id:                                      ~
   title:                                   { type: VARCHAR, size: '255', required: true }
   created_at:                              { type: TIMESTAMP, required: true }
   updated_at:                              { type: TIMESTAMP, required: true }

 article_data:
   id:                                      ~
   article_data:                            { type: BLOB, required: true } 
   article_filename:                        { type: VARCHAR, size: '255'}
   article_id:                              { type: INTEGER, required: true, foreignTable: article, foreignReference: id, onDelete: cascade }

所以,在我的文章管理模块中,我想显示article_data小部件,这是一个文件上传。

一切都很好。但是,在将上载的文件保存到服务器时,article_id字段为空。

有没有办法可以获得文章的ID并将其保存为article_data表的article_id?

由于

编辑:

我想我需要覆盖saveEmbeddedForm()方法,但我不确定我需要做什么。

有人可以为saveEmbeddedForm()的某些代码提供帮助吗?

由于

1 个答案:

答案 0 :(得分:3)

我不知道Propel,但是在Doctrine你可以做这样的事情:

class ArticleForm extends BaseForm
{
  public function configure()
  {
    parent::configure();

    $form  = new sfForm();
    $datas = $this->getObject()->getDatas();

    foreach ($datas as $index => $data)
      $form->embedForm($index, new ArticleDataForm($data));

    $this->embedForm('dataForms', $form);
  }

  public function saveEmbeddedForm($con = null, $forms = null)
  {
    $dataForms = $this->getEmbeddedForm('dataForms')->getEmbeddedForms();

    foreach ($dataForms as $dataForm)
      $dataForm->getObject()->setArticle($this->getObject());

    parent::saveEmbeddedForm($con, $forms);
  }
}