Symfony2应用程序通常围绕 bundle 进行组织。每个 bundle 包含(许多) Controller 。每个 Controller 都应映射一条路由。

实际上,路由通常存储在束的config文件夹下的特定文件中,或者最终在每个 Controller 内部进行注释。

我正在寻找的是Twig中一种识别当前路线是否属于特定Symfony bundle 的方法。是否可以?

最后,我认为路由名称应遵循 Controller 的 namespace ,但也可以是随机但唯一的名称,例如qwer_XX而不是ACME_HomeBundle_home。因此,我们不能求助于 namespace 到路由名称的关联来完成我所要的。

最佳答案

通过查看Request对象,我找到了可能的解决方案。

该 Controller 已附加到Request对象,因此可以从Twig中从字符串中提取它:

app.request.attributes.get('_controller')

并检索 bundle 名称。例如,可以通过TwigExtension定义这样的过滤器功能,例如
public function getFilters() {
    return array(
        ...//other filters
        'bundleName'=>new \Twig_Filter_Method($this, 'bundleNameFilter'),
    );
}

public static function bundleNameFilter($string){
  return strstr(substr(strstr($string, '\\'), 1), '\\', true);
}

然后,在 Twig 中按如下方式使用它:
{{  app.request.attributes.get('_controller') | bundleName }}

希望能帮助到你。

关于symfony - symfony-检查Twig模板中当前路径是否属于特定的Symfony2外滩,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14644501/

10-09 20:04
查看更多