2012-04-20 39 views
1
public function executeNew(sfWebRequest $request) 
    { 
    $this->form = new JobeetJobForm(); 
    } 

    public function executeCreate(sfWebRequest $request) 
    { 
    $this->forward404Unless($request->isMethod('post')); 

    $this->form = new JobeetJobForm(); 

    $this->processForm($request, $this->form); 

    $this->setTemplate('new'); 
    } 

    protected function processForm(sfWebRequest $request, sfForm $form) 
    { 
    $form->bind($request->getParameter($form->getName())); 
    if ($form->isValid()) 
    { 
     $jobeet_job = $form->save(); 

     $this->redirect('job/edit?id='.$jobeet_job['id']); 
    } 
    } 

我生成模块与教条生成器。我想make:如果我编辑当前的作业,然后单击保存,而不是保存此编辑,我想创建新的对象作业与新的ID和相同的数据作为当前编辑的作业。我怎样才能做到这一点?我想使它与维基百科一样。如何使用Doctrine来历史化我的对象的每个版本?

编辑: 我不知道如何打开操作编辑,编辑几个字段,然后单击保存,而是保存这些更改,我想创建新的对象。我必须编辑的内容processForm

+1

看起来你需要开始学习,阅读,聘请培训师或聘请程序员,如果你想要你的问题的实际答案 - 这个网站可能不适合如此广泛的请求。 - 可能你可以让你的问题更具体一些? – hakre 2012-04-20 08:19:39

+0

您是否尝试过Jobeet教程?这些可用于Doctrine和Propel。虽然你可以自己做,但Doctrine教程的快照拷贝已经可用(已完成),并且我已经在论坛中提供了Propel的(前10天)。我鼓励任何1.3/1.4初学者给他们一个去 - 他们真的帮助理解,并且值得花时间。 – halfer 2012-04-21 09:21:58

回答

3

这正是versionable behavior of Doctrine的目标。

+0

谢谢:)可能仅在模板中使用 - > getVersions for tshowing all version?我不能使用这个:( – 2012-04-20 09:22:00

+0

那么使用原则可版本化(而不是Propel中的那个)的坏处是你没有这样的(sooo)有用的方法。你必须自己构建它们。 – j0k 2012-04-20 09:28:08

0

当你需要做的时候保持所有相关对象的版本。您可以序列化对象并将其保存在数据库中。看看github上的JMSerializerBundle。

+0

我们正在谈论sf1.4而不是sf2.0 :) – j0k 2012-04-21 09:06:18

+0

该死的StackOverflow标签;]。在Symfony 1.4中是一个学说bahaviour:loggable :) – 2012-04-24 09:48:37