Я работаю над проектом symfony. Я сражаюсь с формой, которая не будет перенаправляться на ее собственную страницу. Атрибут action установлен в значение "", а метод установлен для публикации. В этом случае он должен вызывать одну и ту же страницу, но я заканчиваю страницу 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(); }
Самое забавное, что когда я вызываю страницу с ее URL-адреса, она отображается правильно, 404 происходит только при отправке с помощью формы.
заранее спасибо
PS: конфигурация маршрутизации:
stories_detail: url: /stories-of-the-month/:slug class: sfDoctrineRoute param: { module: stories, action: detail} options: { model: Article, type: object, method: doSelectForSlug }
Вам нужно явно разрешить POST для маршрута. Измените свой маршрут на:
stories_detail: url: /stories-of-the-month/:slug class: sfDoctrineRoute param: { module: stories, action: detail} options: { model: Article, type: object, method: doSelectForSlug } requirements: sf_method: [get, post]