2010-12-01 21 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