在您的 News、Event 和 Link 模型中创建用于获取最后 5 条记录的方法。然后在您的控制器中,将模型包含在 Controller::uses 属性中,或者在操作中使用 ClassRegistry::init() 来访问模型,例如
function my_action() {
$news = ClassRegistry::init('News')->getRecent();
$events = ClassRegistry::init('Event')->getRecent();
$links = ClassRegistry::init('Link')->getRecent();
$this->set(compact('news', 'events', 'links'));
}
然后,您可以从任何控制器操作调用这些模型方法,保持您的应用程序 DRY。
在您的 my_action.ctp 视图以及许多其他视图中,只需渲染元素,例如
// my_action.ctp
<?php
echo $this->element('recent_news');
echo $this->element('recent_events');
echo $this->element('recent_links');
?>
然后,您的元素可以只遍历 $news(或其他)变量,以显示带有指向其各自控制器中的“视图”操作的链接的项目。
仅仅因为控制器与模型匹配,并不意味着您不能在其中使用其他模型。