Symfony 1.4嵌入式表格

时间:2011-02-16 10:57:15

标签: symfony1

我有一个父表单PageForm和一个嵌入表单ContentForm。 Page与Content有一对多的关系。在编辑PageForm时,我只嵌入了1个ContentForm - 这个工作正常。这是PageForm的配置方法

$content = new content();
$content->Page = $this->getObject();
if (sfContext::getInstance()->getActionName() == 'new')
{
    $form = new contentForm($content);
} else
{
    $form = new contentForm($this->getObject()->getPublishedVersion());
}
$this->embedForm('content', $form);

方法getPublishedVersion()返回单个内容对象。

编辑和保存工作正常 - 保存父窗体也会将嵌入对象的更新执行到数据库中...

我的问题是我不想更新我想要创建新记录的现有记录并增加version_number列。我试过覆盖PageForm类的saveEmbeddedForms()方法,但我发现它很难 - 有没有人有关于我如何做到这一点的任何例子或想法?

我试过这个 - >

if ($forms === null)
{
    $forms = $this->embeddedForms;
}
$newForm = new contentForm($forms['content']);
$newForm->save();
return parent::saveEmbeddedForms($con, $forms);

但它抱怨contentForm()期望和对象......我如何从数组创建一个新对象?

1 个答案:

答案 0 :(得分:2)

这就是我解决它的方法......

public function saveEmbeddedForms($con = null, $forms = null)
{
    if ($forms === null)
    {
        $forms = $this->embeddedForms;
    }
    // create new object as copy
    $newcontent = $forms['content']->getObject()->copy(false);
    // unset the id
    unset($newcontent->id);
    // incerement version
    $version = $newcontent->getVersion();
    $newcontent->setVersion($version +1);
    // save new record
    $newcontent->save();
    return; // dont save the current record
}