Symfony 4 Route 不匹配 - redirectToRoute 导致当前页面

Urk*_*akz 0 php routing frameworks redirecttoroute symfony4

亲爱的智能蜂巢,

我在 symfony 4 中遇到了重定向问题。当然我试图找到一个类似的问题,但没有找到解决方案。

我刚刚通过一些教程开始学习 Symfony 4。(我喜欢它!!!)

该程序是本地 apache 服务器上的一个非常简单的博客示例(也许这很重要)。表示列表、添加、显示

所以我的问题出在 add 方法中。添加文章(工作正常)后,我想使用redirectToRout('article_list')。但这并没有把我带到任何地方,除了在添加页面上。

当我调试我的路线时,我可以看到正确的路线:

article_list               ANY      ANY      ANY    /article                          
article_delete             DELETE   ANY      ANY    /article/delete/{id}              
article_add                ANY      ANY      ANY    /article/add                      
article_show               ANY      ANY      ANY    /article/{id}
Run Code Online (Sandbox Code Playgroud)

当我手动输入它们时,这些路线都可以正常工作。

add-function 也很简单:

/**
     * @Route(
     * "/article/add", 
     * name="article_add",
     * )
     */
    public function add(Request $request)
    {
        $article = new Article();
        $form = $this->createFormBuilder($article)
            [...]
        ->getForm();

        $form->handleRequest($request);

        if($form->isSubmitted() && $form->isValid()){
            $article = $form->getData();

            $entityManager = $this->getDoctrine()->getManager();
            $entityManager->persist($article);

            $entityManager->flush();

            $this->redirectToRoute('article_list');
        }


        return $this->render('article/new.html.twig', array(
            'form' => $form->createView()
        ));
    }
Run Code Online (Sandbox Code Playgroud)

以及列表功能

/**
     * @Route(
     * "/article", 
     * name="article_list",
     * )
     */
    public function index()
    {
        $articles = $this->getDoctrine()->getRepository(Article::class)->findAll();
        return $this->render('article/list.html.twig', [
            'articles' => $articles,
        ]);
    }
Run Code Online (Sandbox Code Playgroud)

如您所见,注释中的名称是正确的。

当我将 redirectToRoute-Method 更改为

redirectToRoute("/article");
Run Code Online (Sandbox Code Playgroud)

我收到错误消息“无法为命名路由“/article”生成 URL,因为这样的路由不存在。在日志中,我看到Matched route "article_add" 路由“/article”与路由“article_add”匹配。那不是,我会期待什么....

所以我有点感觉,添加页面上的某些内容忽略了我的路线。

有没有人知道,我看不到什么简单的问题?

谢谢!我真的很想了解,这里出了什么问题......

El_*_*nja 7

您没有返回重定向。做这个:

return $this->redirectToRoute('article_list');
Run Code Online (Sandbox Code Playgroud)

该方法仅创建响应,您需要显式返回。