正如我说:
无需在会话存储,你可以在所有模板使用一根树枝全球化,所以它的可用,你可以确保你的基本控制器运行preExceute拉所有的数据一起然后添加该全局。
这可能是这个样子:
abstract class MyBaseController extends Controller
{
private $view = null;
private prepareView()
{
$twig_loader = new Twig_Loader_Filesystem(PATH_VIEWS);
return new Twig_Environment($twig_loader);
}
public function getView()
{
if ($this->view === null) {
$this->view = $this->prepareView();
}
return $this->view;
}
protected function preRender()
{
// whatever logic you need to prepare the menu data as $links
$this->getView()->addGlobal('links', $links);
}
public function render($view, $data_array = array())
{
$this->preRender();
// render a view while passing the to-be-rendered data
echo $this->getView()->render($view . PATH_VIEW_FILE_TYPE, $data_array);
}
}
现在取决于你需要建立你的东西对你$links可能会或可能不会需要得到更多详细一点的数据。尤其是在Application课程中如何处理url参数。我真的希望你只做这个学习经历,因为你发现这个“框架”对于学习如何实现MVC是没有什么好处的: -/