我正在使用http://www.php-mvc.net框架启动一个新项目,但以前从未在头文件中包含过数据库结果,也不知道该如何进行。我需要从数据库中提取当前类别和ID的列表,并使用它们来填充菜单。
header.php文件位于/views/_templates中,通常将数据库结果传递给视图的方法是在相关模型中运行查询,在控制器中获取数据,将数据从控制器传递给视图,然后在视图中使用foreach循环遍历数据,问题是_template文件没有任何类型的控制器。
我能想到的最好的方法是使用include并包含来自home控制器的视图文件,使用该控制器获取结果并将其传递到views/home文件夹中的menu.php。
/views/_templates/header.php
<li class="dropdown">
<?php include 'views/home/menu.php'; ?>
</li>
/views/home/menu.php
foreach ($links as $link){
<a href="<?php echo URL . $link->url; ?>"><li><?php echo $link->name; ?></li></a>
}
- 上述代码被缩短,这更多是出于原理而不是工作示例。
我想出的方法很有效,但我想知道是否有更优雅的做事方式?
1条答案
按热度按时间jchrr9hc1#
正如我所说:
不需要存储在会话中,您可以使用一个Twig全局,这样它就可以在所有模板中使用,您可以确保您的基本控制器运行一个preExceute来将所有数据拉到一起,然后添加该全局。
看起来可能像这样:
现在,根据你需要什么数据来构建你的
$links
,你可能需要或者可能不需要变得更详细。特别是考虑到URL参数在Application
类中是如何处理的。我真的希望你只是作为一个学习经验来做这件事,因为你发现的这个"框架"除了学习如何实现MVC之外,并没有什么好处。