我正在尝试使用 Fragment 助手类优化我的 Kohana (3.2.2) 应用程序,但我才意识到我做错了。
型号_文章:
public function get_articles()
{
/*
* This is just a PDO wrapper, I don't like the kohana built in
* database module
*/
$db = DB::instance();
$article_stmt = $db->prepare("SELECT * FROM articles");
$article_stmt->execute();
return $article_stmt->fetchAll();
}
控制器_文章:
public function action_index()
{
$this->template->content = View::factory('welcome/index');
$this->template->content->articles = Model::factory('article')->get_articles();
}
风景:
<?php if ( ! Fragment::load('home.articles')): ?>
<!-- cache test -->
<?php foreach($articles as $article) echo $article->title . PHP_EOL ?>
<?php Fragment::save(); ?>
<?php endif; ?>
您可以看到,无论视图中发生什么,查询总是被执行。我希望仅在缓存更新时执行查询。但是将模型对象传递给视图会破坏我猜的一些 MVC 约定?!有人可以告诉我怎么做吗?!