duanji2002 2014-11-30 10:02
浏览 32
已采纳

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

I would like to create in layout dynamic menu, which will be manage from administrative panel. What i know is the object can be pass to view by the action from controller.

What i want is pass object to layout ( twig engine ) without using controller and that will work independently form controller and action.

How can i do that?

  • 写回答

1条回答 默认 最新

  • dpo69086 2014-11-30 11:21
    关注

    If you want a global variable / object in Twig, you have to implement Twig_Extension and add a new global (which will be accessible to all your templates).

    A simple example would be:

    1) Register a service in <bundle>/Resources/config/services.yml

    services:
      acme.twig.acme_extension:
        class: Acme\DemoBundle\Twig\AcmeExtension
        tags:
          - { name: twig.extension }
    

    2) Then create the extension:

    <?php
    
    namespace Acme\DemoBundle\Twig
    
    class AcmeExtension extends \Twig_Extension {
      public function getGlobals() {
        return [
          'menu' => new Menu(),
        ];
      }
    }
    

    3) Then in your template:

    {{ menu.render }} // Whatever
    

    Of course, you can pass arguments to the Twig extension if needed.

    Anyway, if you're trying to build a menu, maybe you should have a look at KnpMenuBundle, which helps a lot (https://github.com/KnpLabs/KnpMenuBundle)

    Hope it helps!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题