让我们假设我正在创建一个简单的博客,并且我有两个控制器-BaseController和PagesController。 在BaseController中,我从数据库中获取元标记。 在PagesController中,我有两个函数:index()呈现index.html.twig模板和view()呈现view.html.twig。 我想将BaseController中的meta标签变量设置为全局变量,因此在PagesController中,我不必渲染它们,只需渲染诸如内容的变量即可从数据库获取数据。
我该怎么办?最好的解决方案是什么?
注意:我想在BaseController中做到这一点,我不想将每个变量都写在树枝全局变量中。
答案 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);
}
}