symfony入门学习资料之十五:twig模板中的全局变量实现办法

symfony入门学习资料之十五:twig模板中的全局变量实现办法

 


     一个网站总有一些网站名等之类的公用信息,这些公用信息体现在它是网站配置信息变量,这一些信息在网站是公用的,所以在TP开发中我们做一引父类的Controller,在其_initialize中实现配置的读取。
       在symfony中,要达到此类结果,用服务注入进行解决。

在MobileBundle中新建一个Service 创建

entityManager=$entityManager;
        $repository =  $this->entityManager->getRepository('AppBundle:Config');
        $query = $repository->createQueryBuilder('p')->getQuery();
        $configs = $query->getArrayResult();
        $arrCon=null;
        foreach ($configs as $item){
            $arrCon[$item['name']]=$item['value'];
        }
        $this->configs=$arrCon;

    }

    public function getGlobals(){
            return $this->configs;

    }

   

}

$entityManager 为构造function传入的参数,类型是doctrine.orm.entity_manager,这里体现不出来,但在配置里加入以下代码:

    app.configs:
        class: Moblie\MobleBundle\Service\ConfigServer
        arguments: ["@doctrine.orm.entity_manager"]

调用服务的代码我们写在一个基类里:
形式如下:
在基类的twig

{% set confs= configs.getGlobals %}



    {% block title %}{{ confs.webname }}{% endblock %}
    
    
    
    
    
    
    
    
    
    


{{ include('public/top.html.twig') }}
{% block body %}{% endblock %} {{ include('public/footer.html.twig') }}
{% block javascripts %}{% endblock %}

{% set confs= configs.getGlobals %}  这里引入了服务及服务方法。让方法读出的数组线了confs.
其他页面调用:
{% extends 'base.html.twig' %}
{% block title %}

    {{ confs.webname }}

{% endblock %}

 

你可能感兴趣的:(Symfony,TP5,Edusoho)