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())
。