2011-04-07 26 views
0

我需要爲模型列表創建「複製」動作。它應該從某個模型中獲取所有的值,將它們填充到表單中,只需編輯幾個字段,按下「保存」後就可以創建NEW模型。目前,我想過合併編輯及新動作像這樣:symfony 1.4:創建「複製」動作

public function executeListCopy(sfWebRequest $request) 
    { 
    # EDIT 
    # $this->offer = $this->getRoute()->getObject(); 
    # $this->form = $this->configuration->getForm($this->offer); 

    # NEW 
    # $this->form = $this->configuration->getForm(); 
    # $this->offer = $this->form->getObject(); 

    # COPY 
    <..> 
    } 

EDIT部分顯示當我使用編輯按鈕哪些命令交響樂運行。
與編輯剛剛創建新模型相同。

我commed了這一點:

$this->form = $this->configuration->getForm($this->getRoute()->getObject()); 
$this->job_offer = $this->form->getObject(); 

,未能通過。這將模型ID提供給表單,並且由於id是預定義的 - 它會進行編輯,而不會創建模型。

我應該怎麼做?

回答

0

下面是一個例子:

//routing 
job: 
    class: sfDoctrineRouteCollection 
    options: 
    model: Job 
    module: job 
    object_actions: {copy: get, updatecopy: post} 

創建2個動作(基於編輯和更新)

class jobActions extends sfActions 
{ 
    public function executeCopy(sfWebRequest $request) 
    { 
    $this->form = new JobCopyForm($this->getRoute()->getObject()); 

    $this->setTemplate('copy'); 
    } 
    public function executeUpdatecopy(sfWebRequest $request) 
    { 
    $this->form = new JobCopyForm($this->getRoute()->getObject()); 

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

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

copySuccess模板是一樣的editSuccess,exept你需要告訴的形式在哪裏發送數據:

<form action='<?php echo url_for('job_updatecopy', $form->getObject()) ?>' method='post'> 

創建並配置表單,覆蓋doSave

class JobCopyForm extends BaseJobForm 
{ 
    public function configure() 
    { 
    } 

    public function doSave($conn = null) 
    { 
    //update object values from form values 
    $this->updateObject(); 
    //clone object 
    $job = $this->getObject()->copy(); 
    //save a clone 
    $job->save(); 

    } 
} 

乾杯!

+0

最後兩步得到了一些方向。所有我能找到的成功模板是具有設置的導入和模型覆蓋表單的確切位置?它是lib/form/addon嗎?如果是,以什麼名字?我無法在Docs中的任何位置找到此部分。 – JackLeo 2011-04-11 13:59:16

+0

editSuccess只包含表單部分。爲了簡單起見,我只是將表單部分的內容複製到copySuccess中。或者,您可以創建一個form_copy部分,例如,並將其包含在copySuccess中。 – Dziamid 2011-04-11 17:07:39