7

我开始玩 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。按照说明如何在 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>');
    }
}

找不到路线

4

6 回答 6

10

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

于 2019-02-19T04:08:22.917 回答
7

在 Symfony4 中,您必须安装annotationsbundle。

运行此命令composer require annotations

然后重新启动您的项目。

于 2017-12-16T06:58:44.740 回答
1

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

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

那没有用。然而,这确实:

http://localhost:8000/en/lucky/number
于 2019-08-22T12:06:09.607 回答
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

于 2019-10-09T15:28:08.913 回答
0

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

controllers:
    resource: ../../src/Controller/
    type: annotation
于 2020-04-01T07:57:26.707 回答
0

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

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

于 2020-11-21T22:21:03.013 回答