【发布时间】:2021-07-15 20:39:02
【问题描述】:
我有一个在 PHP 8 上运行的现有 Symfony 5.2 应用程序,它使用 YAML 配置进行路由。
我想将其转换为使用属性。我添加了一个config/routes/annotations.yaml 文件:
controllers:
resource: ../../src/UserInterface/Web/
type: annotation
kernel:
resource: ../../src/Kernel.php
type: annotation
(是的,我的控制器在src/UserInterface/Web!)
我从.yaml 配置文件中删除了我的路由,并为控制器添加了属性:
...
use Symfony\Component\Routing\Annotation\Route;
class HomeController
{
#[Route('/', name: 'homepage')]
public function index(Request $request): Response { ... }
}
但是我的主页现在显示“欢迎使用 Symfony”页面。我试过了:
bin/console debug:router
但它不显示homepage 路由。我尝试改用 Doctrine 注释:
/**
* @Route("/", name="homepage")
*/
public function index(Request $request): Response { ... }
也没有运气。我尝试清除缓存:
bin/console cache:clear
但问题仍然存在。 我错过了什么?
【问题讨论】:
-
您仍然需要将控制器配置为 type: annotation。此功能仅更改您在控制器类中声明路由的方式(改为使用属性)。
-
@yceruto 我不确定你在这里建议什么......?
-
你还有其他事情发生。我做了一个新的 5.2.6 项目,添加了你的 UserInterface\Web\HomeController 以及你的路由属性。调整 annotations.yaml 和主页路由显示在 debug:router 中。也许尝试流行的缓存清除。我假设您也在使用 PHP 8。
-
@Cerad,使用 PHP 8,并已清除缓存。应该提到它。
-
您说您“添加”了 annotations.yaml 文件这一事实可能是一个线索。如果您从网站骨架开始,那么您应该已经在 config/routes 目录中有一个 annotations.yaml 文件。有可能你只从骨架开始吗?可能需要安装注释的东西。
标签: php symfony routes symfony5