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 控制器后,我忘记更改其中一个方法中的路由名称。
所以你在复制时可能要小心:)
我开始玩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 控制器后,我忘记更改其中一个方法中的路由名称。 所以你在复制时可能要小心:)