Symfony:在Twig render()方法中提交后重定向

Symfony:在Twig render()方法中提交后重定向,symfony,twig,symfony-forms,Symfony,Twig,Symfony Forms,我在Twig view中有一些帖子。对于每个帖子,我想添加一个表单注释 为了实现最佳的可重用性,我在Twig中调用rendercontroller 细枝: 控制器: 但我不能在提交后重定向。我知道从一个角度来看这很复杂,HttpRequest已经通过了 这是一个错误: 呈现状态代码为302时,在呈现模板错误期间引发异常 你有解决办法吗?谢谢您:主要问题是如何处理您的无效表单 1提交期间的重定向 如果您不在乎用户是否在评论页面上,而不是在表单无效的情况下呈现,您只需在呈现模板中添加以下内容: {#

我在Twig view中有一些帖子。对于每个帖子,我想添加一个表单注释

为了实现最佳的可重用性,我在Twig中调用rendercontroller

细枝:

控制器:

但我不能在提交后重定向。我知道从一个角度来看这很复杂,HttpRequest已经通过了

这是一个错误:

呈现状态代码为302时,在呈现模板错误期间引发异常


你有解决办法吗?谢谢您:

主要问题是如何处理您的无效表单

1提交期间的重定向

如果您不在乎用户是否在评论页面上,而不是在表单无效的情况下呈现,您只需在呈现模板中添加以下内容:

{# 'user/post/_comment.html.twig' #}
{{ form_start(form, {'action': path('your_comment_route')}) }}

2提交后使用javascript重定向

如果您希望在表单出错时用户保持在同一页面中,那么除了添加参数以更改控制器的结果之外,我看不到任何其他解决方案

{{ render(controller('App\\Controller\\User\\PostController::comment', {
        'post': post,
        'embedded': true,
 } )) }}
if ($form->isSubmitted() && $form->isValid()) {
        if($embedded) {
           return $this->render('user/post/success.html.twig', [
              //call this route by javascript?
              'redirectRoute': $this->generateUrl()//call it in twig, it's just for better understanding
           ])
        } else {
            $this->redirectToRoute(...); 
        }
    }
然后在你的控制器里

{{ render(controller('App\\Controller\\User\\PostController::comment', {
        'post': post,
        'embedded': true,
 } )) }}
if ($form->isSubmitted() && $form->isValid()) {
        if($embedded) {
           return $this->render('user/post/success.html.twig', [
              //call this route by javascript?
              'redirectRoute': $this->generateUrl()//call it in twig, it's just for better understanding
           ])
        } else {
            $this->redirectToRoute(...); 
        }
    }

我想确定:当您从渲染控制器提交表单时,是否要重定向?是:我想在每次有效提交后重定向: