Symfony 3路由未找到。

4

尝试按照Symfony 3.1的书籍进行操作:

这是我的控制器:

<?php
namespace AppBundle\Controller;

use Symfony\Component\HttpFoundation\Response;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;

class LuckyController
{
    /**
     * @Route("/lucky/number")
     */
    public function numberAction() {
        $num = rand(0,100);
        return new Response("number is ".  $num);
    }
}

该书前往以下URL:http://localhost:8000/lucky/number以查看响应。然而,对于我来说,这会导致404错误The requested resource /lucky/number was not found on this server.。从阅读其他类似的问题中可以看出,路由可以通过注释完成。那么这段代码有什么问题吗?关于Web服务器:我正在运行来自web/目录的内置PHP服务器。即: php -S localhost:8000。也尝试过运行php bin/console server:run,但返回了No route found for "GET /lucky/number

你是不是复制粘贴了那段代码?如果没有,请检查 * @Route 中是否有制表符,如有请改为一个空格。如果没有,你是否在命令行中运行了 php bin/console server:run 呢? - Alvin Bunk
没有剪切和粘贴。还使用了'php bin/console server:run' - 仍然返回"No route found for "GET /lucky/number"。这是在* @Route之间有一个空格。 - ChristianF
4个回答

3

这里还有一个可能的问题,就是缓存存在的问题。如果您正在按照教程操作,您可能已经查看了第一页,因此Symfony已经缓存了类和路由。为了确保Symfony能够接收到这些更改,请确保清除缓存(使用正确的环境参数):

php bin/console cache:clear --no-warmup -e prod

2

啊,我明白了。谢谢你的回答。 - ChristianF

1

在提问之前我没有找到解决方案,但从另一个问题中找到了答案。

看起来书上有一个错别字,前往的路由是 http://localhost:8000/en/lucky/number

如果你按照这个路由去做,一切都能正常工作。虽然我不确定 /en/ 路由部分是在哪里定义的。


0

我在Symfony 3.2上遇到了这个问题,并通过以下方式解决:

php bin/console cache:clear --env=prod每次需要测试新添加的路由时都要执行。

谢谢。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接