Ich habe alle Controller in meinem Symfony 6-Projekt nach /src/Web/Controller
verschoben, wie unten gezeigt
├── src │ ├── ... │ └── Web │ | ├── Controller │ | ├── .... | |── Kernel.php
Mein routes.yaml
entsprechend geändert
#routes.yaml controllers: resource: ../src/Web/Controller/ type: annotation
Das Problem ist nun, dass alle meine Routen einen Namen mit dem Präfix app_web
haben. Ich vermute, dass es an dieser Struktur liegt.
$ php bin/console debug:router
Die Befehlsausgabe lautet wie folgt:
... ... app_web_post_index GET|HEAD ANY ANY /post/ app_web_post_create GET|HEAD|POST ANY ANY /post/create
Hier möchte ich nur den Namen haben post_index
Wie entferne ich dieses Präfix?
如果您没有明确命名路由,它们会为您命名。
名称是使用控制器的类和方法的完全限定名称生成的(尽管由于某种原因没有命名空间的最后一部分 -
controller
)。如果您不想使用自动生成的名称,只需自己命名您的路线即可:
使用内置选项您可以向一组路由添加前缀,但不要将其从自动生成的名称中删除。
如果这对于您的用例“自动”发生确实很重要,我想你可以构建自己的路由加载器,但我想说这有点过分了。只需适当地命名路由,或者使用自动生成的名称即可。
显式命名路由通常是一个更好的想法/实践,因为如果您在其他任何地方引用路由名称,即使您选择将控制器重构为不同的代码结构,也可以保证名称保持不变。