A Symfony2 app is usually organized around bundles. Each bundle contains (many) controllers. Each controller should be mapped with a route.
Practically speaking, routes are usually stored in a specific file under the config
folder of the bundle or, eventually, annotated inside each controller.
What I'm looking for is a way in Twig to identify if the current route belongs from a specific Symfony bundle. Is it possible?
Please, as a final remark, consider that the route name should follows the namespace of the controller, in my opinion, but it could also be a random but unique name, e.g. qwer_XX
instead of ACME_HomeBundle_home
. Hence, we cannot resort to a namespace-to-route-name association to do what I'm asking for.
Looking at the Request object, I found a possible solution.
The controller is attached to the Request
object, hence one can extract it in Twig from the string:
app.request.attributes.get('_controller')
and so retrieve the bundle name. For instance one can define through a TwigExtension such a filter function, e.g.
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);
}
Then, in twig use it as follows:
{{ app.request.attributes.get('_controller') | bundleName }}
Hope it helps.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With