在 YML 中为路由添加前缀 - 只有一个控制器

Posted

技术标签:

【中文标题】在 YML 中为路由添加前缀 - 只有一个控制器【英文标题】:Prefixing routes in YML - only one controller 【发布时间】:2015-11-18 17:48:22 【问题描述】:

我对 symfony2 中的路由有疑问:

当我想通过注解为控制器添加前缀时,我这样做:

/**
 * @Route("/blog")
 */
class BlogController extends Controller

而且效果很好。但是我怎样才能只使用 YML 来做同样的事情呢?

我知道我可以将它添加到 routing.yml:

mybundle_blog:
    resource: "@MybundleBundle/Resources/config/routing.yml"
    prefix:   /blog

但是路径“/blog”适用于 MybundleBundle 中的所有控制器。我想让它只适用于控制器 BlogController

请帮帮我。 提前谢谢你。

【问题讨论】:

【参考方案1】:

app/config/routing.yml:

mybundle_blog:
    resource: "@MyBundleBundle/Controller/BlogController/"
    type:     annotation
    prefix:   /blog

【讨论】:

我之前尝试过这样做,但我收到一条消息“无法加载资源“@MyBundleBundle/Controller/BlogController/”。确保“MyBundleBundle/Controller/BlogController/”捆绑包已正确注册并且在应用程序内核类中加载。如果捆绑包已注册,请确保捆绑包路径“@MyBundleBundle/Controller/BlogController/”不为空。当然,“BlogController”类存在于正确的目录中,当我使用注释时,一切正常。

以上是关于在 YML 中为路由添加前缀 - 只有一个控制器的主要内容,如果未能解决你的问题,请参考以下文章

为所有从包路由导入的前缀添加前缀时,如何在 Symfony 包的模板中生成 URL?

在 Laravel 中为资源控制器添加新方法

一切正常,但我更改了路由文件以添加前缀。它开始显示控制器不存在的反射异常

在 ASP.NET MVC 3 中为控制器设置默认操作(而不是索引)

在指向另一个宏的可变参数宏中为每个参数添加前缀

在 Python 中为中缀表示法添加前缀表示法