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/