Symfony3.4访问/lucky/number报NotFoundHttpException路由不存在问题
问题根源
Symfony 3.4 默认的路由注解扫描规则仅会读取AppBundle\Controller命名空间下的控制器注解,你修改了控制器命名空间到App\Controller后,原有的扫描配置没有覆盖到新的命名空间路径,所以系统没有识别到你写的@Route注解,自然找不到对应路由。
解决步骤
- 第一步:打开项目路由主配置文件
app/config/routing.yml,找到默认的注解扫描配置,默认配置通常如下:
app: resource: "@AppBundle/Controller/" type: annotation
- 第二步:将上述配置修改为适配新命名空间的路径,两种修改方式二选一即可:
- 如果你所有控制器都已经迁移到
src/App/Controller目录下,直接修改resource路径:
app: resource: "../src/App/Controller/" type: annotation- 如果你同时保留了AppBundle下的控制器和新的
App\Controller下的控制器,可以新增一条扫描规则:
app: resource: "@AppBundle/Controller/" type: annotation app_custom: resource: "../src/App/Controller/" type: annotation - 如果你所有控制器都已经迁移到
- 第三步:清理项目缓存,执行命令
php bin/console cache:clear - 第四步:可执行
php bin/console debug:router命令查看路由列表,确认lucky_number(默认生成的路由名)已经出现在列表中后,再访问对应路径即可正常加载。
额外排查点
如果修改配置后仍然不生效,可检查以下两项:
- 确认控制器文件存放路径和命名空间完全匹配:命名空间为
App\Controller的前提下,文件必须放在src/App/Controller/LuckyController.php,路径大小写完全对应 - 确认
@Route注解引入正确:你代码中写的use Symfony\Component\Routing\Annotation\Route;是正确的,没有引入错类
内容的提问来源于stack exchange,提问作者af_159623
相关产品推荐
相关产品推荐

