我开始玩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>');
}
}
答案 0 :(得分:2)
在Symfony4中,您必须安装annotations
软件包。
运行此命令composer require annotations
答案 1 :(得分:2)
有时会由于缓存而发生此问题。您需要运行php bin/console cache:clear
,然后它才能正常工作。
答案 2 :(得分:0)
尝试注释时,我遇到了同样的事情,然后发现安装了演示程序(博客),您需要在URL中添加语言。因此文档说:
那没有用。但这确实做到了:
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控制器后,我忘了更改其中一种方法的路由名称。 因此,在复制时您可能要小心:)