Ответ 1
Чтобы сделать это официальным ответом, Fabien не считает, что Symfony2 когда-либо будет поддерживать эту функцию.
Я использую встроенный контроллер для отображения формы, используемой на нескольких страницах:
Twig
{% 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
, который сохранит ваши данные перенаправления и выбросит его во встроенный контроллер. Затем перенаправляйте в родительский контроллер.