你好我正在研究一个symfony项目。我正在与一个不会重定向到自己页面的表单进行斗争。 action属性设置为“”,方法设置为post。在这种情况下,它应该调用相同的页面,但我在404页面结束。
这是我的页面在操作文件中的代码:
public function executeDetail(sfWebRequest $request)
{
if($request->isMethod(sfRequest::POST))
{
if(!$this->getUser()->isAuthenticated())
$this->redirect('@user_login');
$formData = $request->getParameter($this->form->getName());
$this->form->bind($formData, $request->getFiles($this->form->getName()));
if ($this->form->isValid())
{
$user = $this->getUser()->getLogged();
$comment = $this->form->save();
$comment->setIsActive(1);
$comment->setAuthor($user);
$comment->setHash(md5(uniqid(rand(), true)));
$comment->setArticle($this->detail);
$comment->save();
$this->status = 'SUCCESS';
}
else
{
$this->status = 'ERROR';
}
}
$this->story = $this->getRoute()->getObject();
$this->status = false;
$this->bAuthorLogged = false;
$this->form = new ArticleCommentForm();
}
有趣的是,当我从它的网址调用页面时它正确显示,404只在提交表单时才会出现。
我希望这可以事先向某人说话
答案 0 :(得分:0)
1)在您的视图中定义您的表单开头标记:
<?php echo $form->renderFormTag($sf_request->getUri()) ?>
2)检查您的路线是否接受您的http方法(发布/放置): 在你的app目录中从bash调用:
./symfony app:routes frontend
您将看到所有路线和theres定义(使用接受的http方法)
3)您可以在路由中定义它:
route_name:
url: /my-nice-url
param: { module: yourModuleName, action: detail }
requirements:
# this is what matters - if you leave it undefined, it shlould accept any HTTP method
sf_method: [get, post, put, delete]
这是关于配置的非常好的信息来源: http://www.symfony-project.org/reference/1_4/en/