私はsymfony 1.4でモジュールを生成するとき、それは(例えば)を作成し、「新規」と、このような方法で「作成」:--non-verbose-templates
でsymfonyの生成
public function executeNew(sfWebRequest $request)
{
$this->form = new SomeForm();
}
public function executeCreate(sfWebRequest $request)
{
$this->forward404Unless($request->isMethod(sfRequest::POST));
$this->form = new SomeForm();
$form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
if ($form->isValid())
{
$res_object = $form->save();
$this->redirect('results_show', $res_object);
}
$this->setTemplate('new');
}
をそれは私がそれを修正(下記のコードのようなものを生成し、作成部分のみを表示する):
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 Labsの人は何を知っているのですか?
しかし、そのような状況があります。ユーザーはフォームを入力しましたが(some_form/new)、間違いを犯しました(some_form/createにリダイレクトされました)。彼はこの作業を完了するための時間はもうありませんでしたが、彼は将来、いくらかの補充をしたいと思っています(またはフォームを補充するだけです)。この状況でユーザーは何をしますか?はい - ページをブックマークします。しかし、彼は戻ってくるとき、何を見ますか? 404!彼はPOSTメソッド(some_form/create)だけで動作するアクションに戻ります。私はそれが良いとは思わない。 – kpower
newとcreateは同じURLを共有することができ、経路は要求タイプ別に区別することができます –
もちろん、正しい設定を行うために独自のルールを追加する必要があります。私は正しい? – kpower