Symfony-在基本布局中渲染全局变量

时间:2018-08-08 02:26:18

标签: symfony templates controller twig

让我们假设我正在创建一个简单的博客,并且我有两个控制器-BaseController和PagesController。 在BaseController中,我从数据库中获取元标记。 在PagesController中,我有两个函数:index()呈现index.html.twig模板和view()呈现view.html.twig。 我想将BaseController中的meta标签变量设置为全局变量,因此在PagesController中,我不必渲染它们,只需渲染诸如内容的变量即可从数据库获取数据。

我该怎么办?最好的解决方案是什么?

注意:我想在BaseController中做到这一点,我不想将每个变量都写在树枝全局变量中。

1 个答案:

答案 0 :(得分:0)

实现这一目标的一种方法是这样的

<?php
    class BaseController {

        protected function getBaseParameters() {
            /**
                Do stuff
                Do stuff
                Do stuff
            **/
            return $data;
        }

        protected function getTwig() {
            #retrieve twig instance here
            return $this->twig;
        }

        public function render($template, $args) {
            return $this->getTwig()->render($template, array_merge($this->getBaseParameters(), $args));
        }

    }


    class PagesController extends BaseController {
        public function view() {
            $args = [];
            /**
                Do stuff
                Do stuff
                Do stuff
            **/
            return $this->render('view/my/template.html', $args);
        }
    }