проблема сохранения embedForm - Symfony - PullRequest
1 голос
/ 14 января 2011

У меня есть такая схема:

Схема:

 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 имеет значение null.

Есть ли способ получить идентификатор статьи и сохранить его в качестве article_id таблицы article_data?

Спасибо

РЕДАКТИРОВАТЬ:

Я думаю, что мне нужно переопределить метод saveEmbeddedForm (), но я не уверен, что мне нужно сделать.

Может кто-нибудь помочьс некоторым кодом для saveEmbeddedForm ()?

Спасибо

1 Ответ

3 голосов
/ 14 января 2011

Я не знаю 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);
  }
}
...