2010-12-01 24 views
2

當我生成的symfony 1.4模塊,它(例如)「新的」和「創建」這樣的方法產生只顯示建立部分):的Symfony代

public function executeNew(sfWebRequest $request) 
{ 
    $this->forward404Unless($request->isMethod(sfRequest::POST)); 

    $this->form = new SomeForm(); 
    if ($request->isMethod(sfRequest::POST)) { 
    $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName())); 
    if ($form->isValid()) 
    { 
     $res_object = $form->save(); 
     $this->redirect('results_show', $res_object); 
    } 
    } 
} 

什麼是違約產生的原因是什麼?我認爲下面的方法更加緊湊,增加了較少的路由和操作,並且不會更改第一個和下一個(如果有錯誤)形式顯示的URL。但默認的生成方法應該是最好的或最常用的。那麼,Sensio實驗室的人知道些什麼,但我不知道?

回答

2

第一個模板更適合用Symfony構建RESTful應用程序。

如果您想使用巧妙的sfObjectRouteCollection類來創建路由集合,那麼executeNew和executeCreate方法都是預期的。

sfObjectRouteCollection默認爲以下操作創建路線:

名單,新,創建,編輯,更新,刪除和表演。

你是正確的,你的首選模板只有一個網址,但實際上這是不是如果你正在使用學說/行走方式有問題,然後幫助form_tag_for()。這個幫助者將路由集合的形式和名稱作爲參數,然後自己計算出來,這是從集合中使用的正確路由/ URL。

+0

但可能會出現這種情況。用戶填寫表單(some_form/new),但犯了一些錯誤(重定向到some_form/create)。他沒有更多的時間來完成這項任務,但他希望將來完成一些填充(或者只是填寫表格)。用戶在這種情況下做什麼?是 - 書籤頁面。但是當他回來時他會看到什麼?! 404!因爲他會返回到僅使用POST方法工作的動作(some_form/create)。我不認爲這很好。 – kpower 2010-12-06 12:18:36