Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony1 嵌入表单保存问题-Symfony_Symfony1_Symfony 1.4_Propel - Fatal编程技术网

Symfony1 嵌入表单保存问题-Symfony

Symfony1 嵌入表单保存问题-Symfony,symfony1,symfony-1.4,propel,Symfony1,Symfony 1.4,Propel,我有这样的模式: 模式: article: id: ~ title: { type: VARCHAR, size: '255', required: true } created_at: { type: TIMESTAMP, required: true } updated

我有这样的模式:

模式:

 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_数据小部件,它是一个文件上传

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

有没有办法获取文章的id并将其保存为article_数据表的article_id

谢谢

编辑:

我想我需要重写saveEmbeddedForm()方法,但我不确定我需要做什么

是否有人可以帮助编写saveEmbeddedForm()的代码


谢谢

我不知道推进,但在教义中你可以这样做:

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);
  }
}

谢谢你的回复。我使用了你的代码,并对其进行了一些修改。我使用:$this->embedForm('article_data',new ArticleDataForm());而不是配置中的代码,因为由于某种原因,您的代码不显示输入小部件。此外,即使输入为空,也会在我的表中创建一个新行。我需要它只创建一个新的,如果没有图像和更新的图像,如果编辑它的罚款。我做了一对多的关系。你有一对一的关系。然后只需在
saveEmbeddedForm
函数中执行
$this->getEmbeddedForm('article_data')->getObject()->setArticle($this->getObject())