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

Symfony4: No route found for "GET /lucky/number"

我开始玩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>');
    }
}

在 Symfony4 中你必须安装 annotations 包。

运行 这个命令 composer require annotations

然后重新启动您的项目。

有时出现这个问题是因为cache.you需要运行php bin/console cache:clear。然后就可以正常工作了。

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

http://localhost:8000/lucky/number will work exactly like before

那没有用。然而,这做到了:

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

正如@Jack70 回答中的建议。

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

这应该有效。

如果您 运行 命令 php bin/console debug:router 它会显示可用路由列表,如您在该列表中所见,您需要添加区域设置(语言)作为第一个参数。

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

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

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

此外,如果路线名称出现多次,您将收到该错误消息。

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