2011-01-14 53 views
1

我有一樣的模式:embedForm節能問題 - Symfony的

模式:

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()的代碼?

感謝

回答

3

我不知道行走,但在原則,你可以做這樣的事情:

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

感謝您的答覆。我已經使用你的代碼並修改了一下。我用:$ this-> embedForm('article_data',new ArticleDataForm());而不是配置中的代碼,因爲代碼出於某種原因不會顯示輸入小部件。另外,即使輸入爲空,它也會在我的表格中創建一個新行。我需要它只創建一個新的如果沒有圖像和更新圖像,如果編輯 – terrid25 2011-01-14 14:59:00