Я использую встроенный контроллер для отображения формы, которая используется на нескольких страницах:
прут
{% render 'Bundle:Controller:someForm' %}
контроллер
public function someFormAction() { // Some logic ... if ($form->isValid()) { ... $this->get('session')->setFlash('successful', "Woey!"); return $this->redirect($this->generateUrl('homepage')); } return $this->render('Bundle:Template:form.html.twig', array('form' => $form->createView())); }
Мне нужно перенаправить обратно на домашнюю страницу после того, как форма была успешно отправлена в качестве части шаблона дизайна post-redirect-get . Если я использую его, как описано выше, я получу исключение, так как ответ от встроенного контроллера был 302 вместо 200 (по крайней мере, я ожидаю, что он будет работать так).
Можно ли перенаправить нормально в такой сценарий? Или я приближаюсь к ситуации (с формой, которая отображается на нескольких страницах) от совершенно неправильного угла?
Для официального ответа Fabien не считает, что Symfony2 будет поддерживать эту функцию .
Может быть, это поможет вам. Я использую это, чтобы показать 404 страницы, если ресурс не найден во встроенном контроллере.
try { return $this->render('MyBundle:Table:list.html.twig', $data); } catch(\Twig_Error_Runtime $e) { if($e->getPrevious() instanceof NotFoundHttpException) { throw $this->createNotFoundException(); } else throw $e; }
Вы можете создать RedirectHttpException
, которое будет содержать ваши данные перенаправления и выбросить его во встроенный контроллер. Затем перенаправляйте в родительский контроллер.