Class 在CI中将值从模型传递到视图
我在CI中有一个库,用于检索我最新的twitter更新。它具有将我的最新更新作为对象发送到控制器的功能 我想在我的页面的页脚上显示这些twitter更新,以便它们随时可见 现在我的问题是,我如何直接从一个角度来称呼这些?我知道这在MVC中不是一个好的实践,但我不知道我还能做什么。 我的控制器目前负责我的所有不同页面(这是一个小型网站),我认为在控制器中的每个页面功能结束时调用我的twitter类,然后将其发送到视图不是一个很好的做法 通常,我在控制器中执行此操作:Class 在CI中将值从模型传递到视图,class,codeigniter,model,view,Class,Codeigniter,Model,View,我在CI中有一个库,用于检索我最新的twitter更新。它具有将我的最新更新作为对象发送到控制器的功能 我想在我的页面的页脚上显示这些twitter更新,以便它们随时可见 现在我的问题是,我如何直接从一个角度来称呼这些?我知道这在MVC中不是一个好的实践,但我不知道我还能做什么。 我的控制器目前负责我的所有不同页面(这是一个小型网站),我认为在控制器中的每个页面功能结束时调用我的twitter类,然后将其发送到视图不是一个很好的做法 通常,我在控制器中执行此操作: <?php fu
<?php
function index(){
$data['page'] = 'home';
//i don't want to call my twitter class here every single time I write a new page. (DRY?!)
$this->load->view('template', $data);
}
?>
我有一个助手库,它将一个部分页面包装到主主题中。您可以使用load->view
上的可选参数渲染为字符串
然后,在呈现母版页时,可以加载twitter更新并显示它们。尽管如此,我强烈建议将twitter响应缓存至少5分钟,这将为您节省大量开销
例如:
// Controller somwhere:
$content = $this->load->view('pages/'.$page, array(), true);
$this->myLibrary->masterPage($content);
// Your library:
function masterPage($content)
{
$twitterData = $this->twitter->loadStuff(); // whatever your function is
$twitter = $this->load->view('twitter_bar', array('data' => $twitterData), true);
$this->load->view('master', array('content' => $content, 'twitter' => $twitter);
}
另一种方法是使用基本控制器。我的所有控制器都扩展了我的自定义基本控制器,它在每个页面上保存我需要的东西,例如包含当前用户的对象。谢谢,这样做了。有一个加载视图的助手是个好主意。:)谢谢,很高兴我能帮上忙。我一直不明白为什么母版页的想法从来没有被融入到CI中。总是让我困惑。
// Controller somwhere:
$content = $this->load->view('pages/'.$page, array(), true);
$this->myLibrary->masterPage($content);
// Your library:
function masterPage($content)
{
$twitterData = $this->twitter->loadStuff(); // whatever your function is
$twitter = $this->load->view('twitter_bar', array('data' => $twitterData), true);
$this->load->view('master', array('content' => $content, 'twitter' => $twitter);
}