我想在布局动态菜单中创建,它将从管理面板进行管理。 我所知道的是,对象可以通过控制器的动作传递给视图。
我想要的是在不使用控制器的情况下将对象传递给布局(树枝引擎),它将独立于控制器和动作。
我该怎么做?
答案 0 :(得分:0)
如果你想在Twig中使用全局变量/对象,你必须实现Twig_Extension
并添加一个新的全局(所有模板都可以访问)。
一个简单的例子是:
1)在<bundle>/Resources/config/services.yml
services:
acme.twig.acme_extension:
class: Acme\DemoBundle\Twig\AcmeExtension
tags:
- { name: twig.extension }
2)然后创建扩展名:
<?php
namespace Acme\DemoBundle\Twig
class AcmeExtension extends \Twig_Extension {
public function getGlobals() {
return [
'menu' => new Menu(),
];
}
}
3)然后在你的模板中:
{{ menu.render }} // Whatever
当然,如果需要,您可以将参数传递给Twig扩展名。
无论如何,如果你正在尝试建立一个菜单,也许你应该看看KnpMenuBundle,它有很多帮助(https://github.com/KnpLabs/KnpMenuBundle)
希望它有所帮助!