Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Symfony 2中,如何将对象传递到布局视图而不执行任何操作?_Php_Symfony_Twig - Fatal编程技术网

Php 在Symfony 2中,如何将对象传递到布局视图而不执行任何操作?

Php 在Symfony 2中,如何将对象传递到布局视图而不执行任何操作?,php,symfony,twig,Php,Symfony,Twig,我想在布局动态菜单中创建,它将从管理面板进行管理。 我所知道的是,对象可以通过控制器的操作传递到视图 我想要的是在不使用控制器的情况下将对象传递给布局(细枝引擎),并且该布局将独立于控制器和动作 我该怎么做呢?如果你想在Twig中创建一个全局变量/对象,你必须实现Twig\u扩展并添加一个新的全局变量(所有模板都可以访问) 一个简单的例子是: 1) 在/Resources/config/services.yml services: acme.twig.acme_extension:

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

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


我该怎么做呢?

如果你想在Twig中创建一个全局变量/对象,你必须实现Twig\u扩展
并添加一个新的全局变量(所有模板都可以访问)

一个简单的例子是:

1) 在
/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(),
    ];
  }
}
当然,如果需要,可以将参数传递给细枝扩展

不管怎样,如果你想建立一个菜单,也许你应该看看KnpMenuBundle,这很有帮助()


希望有帮助

在你注册了细枝引擎之后,你可以建立你所需要的对象,然后使用
$twig->addGlobal('my_object',$object')。通过这种方式,您的对象可以在任何地方访问。DarkBee说我应该做什么,我找到了解决方案,但非常感谢您的解决方案。我是php新手,我不知道所有的事情(如:),再一次谢谢!
{{ menu.render }} // Whatever