Symfony4:找不到“GET / lucky / number”的路线

时间:2017-12-15 20:35:57

标签: php symfony controller symfony-routing symfony4

我开始玩symfony4。我刚刚创建了新的应用程序并创建了新的LuckyController。它适用于以这种方式配置的routes.yaml:

lucky:
    path: /lucky/number
    controller: App\Controller\LuckyController::number

使用以下控制器:

<?php

namespace App\Controller;

use Symfony\Component\HttpFoundation\Response;

class LuckyController
{
    public function number()
    {
        return new Response('<html><head></head><body>' . rand(111, 999) . '</body></html>');
    }
}

但我想使用注释。所以我决定评论routes.yaml。以下文档解释了如何create a route in symfony我做了这个:

<?php

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;

class LuckyController extends Controller
{
    /**
     * @Route("/lucky/number")
     */
    public function number()
    {
        return new Response('<html><head></head><body>' . rand(111, 999) . '</body></html>');
    }
}

No route found

6 个答案:

答案 0 :(得分:2)

在Symfony4中,您必须安装annotations软件包。

运行此命令composer require annotations

答案 1 :(得分:2)

有时会由于缓存而发生此问题。您需要运行php bin/console cache:clear,然后它才能正常工作。

答案 2 :(得分:0)

尝试注释时,我遇到了同样的事情,然后发现安装了演示程序(博客),您需要在URL中添加语言。因此文档说:

  

http://localhost:8000/lucky/number将像以前一样工作

那没有用。但这确实做到了:

http://localhost:8000/en/lucky/number

答案 3 :(得分:0)

如@ Jack70答案中所建议。

https://127.0.0.1:8000/en/random/number

这应该有效。

如果运行命令php bin/console debug:router,则会在列表中显示可用的路由列表,您需要将语言环境(语言)添加为第一个参数。

app_annotationsample_number ANY ANY ANY /{_locale}/random/number

答案 4 :(得分:0)

如果您使用注释-您需要检查 config / routes / anotations.yaml 。 您需要检查控制器的路径或添加新路径,例如:

controllers:
    resource: ../../src/Controller/
    type: annotation

答案 5 :(得分:0)

此外,如果路径名称出现多次,则会出现该错误。

我在开发Angular应用程序时遇到了该错误,因此为了进行调试,我在Postman中尝试了相同的路由,我知道该路由可以正常工作,但是这次没有抛出所提到的错误。幸运的是,我刚刚添加了一个新的控制器,所以找到罪魁祸首很容易:问题是,将方法从Web控制器复制到api控制器后,我忘了更改其中一种方法的路由名称。 因此,在复制时您可能要小心:)