如何在Symfony 2中没有操作的情况下将对象传递给布局视图?

时间:2014-11-30 10:02:27

标签: php symfony twig

我想在布局动态菜单中创建,它将从管理面板进行管理。 我所知道的是,对象可以通过控制器的动作传递给视图。

我想要的是在不使用控制器的情况下将对象传递给布局(树枝引擎),它将独立于控​​制器和动作。

我该怎么做?

1 个答案:

答案 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

希望它有所帮助!