如果我的网站上有一个页面,我必须在其中显示 4 或 5 个片段(新闻提要、事件提要等),所有这些都与不同的数据(在不同的模型和数据库表中)有关,那么明智的方法是处理片段内容和布局的生成?我可以使用包含静态函数的单个代码片段 Controller ,每个函数返回一个填充有相关数据的 View 。但是这个片段 Controller 中的每个函数都将与不同的数据/模型进行交互,所以我不确定这是多么面向对象。或者,我可以向每个处理每个关联数据集的 Controller 添加一个静态函数——例如,在 News_Controller 中,以及显示所有新闻项目、单个新闻项目等的函数,我可以添加一个静态函数通过简单地返回我需要的 View 来生成新闻提要。我认为这种方法可能有效,因为我不想为这些简单的片段实例化一个对象,所以在相关 Controller 中使用静态函数有点有意义。这里有点意识流,但我有任何意义吗?!
最佳答案
许多框架都有一些“部分”的概念,通常用于此类事情。
由于这些部分通常是只读的,并且通常显示在每个页面(或一些定义明确的页面集)上,因此您可以像对待页面那样在 Controller 方面考虑它们而无需考虑。
换句话说——请记住,如果您的 View /布局代码直接与您的模型对话是没有问题的,只要它只是询问它们。
我经常这样做:
布局.php:
<div id="newsWidget">
<?PHP $news = Model_News::latest(); ?>
<?PHP foreach($news as $newsitem): ?>
<!-- output some news headlines -->
<?PHP endforeach; ?>
</div>
Model_News::latest() 可能会实现一些缓存等,因为这是布局代码,我可能不想在每次请求时都访问数据库。
无需 Controller 膨胀!
关于php - 在 MVC 中处理片段和 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2867508/