Class 在CI中将值从模型传递到视图

Class 在CI中将值从模型传递到视图,class,codeigniter,model,view,Class,Codeigniter,Model,View,我在CI中有一个库,用于检索我最新的twitter更新。它具有将我的最新更新作为对象发送到控制器的功能 我想在我的页面的页脚上显示这些twitter更新,以便它们随时可见 现在我的问题是,我如何直接从一个角度来称呼这些?我知道这在MVC中不是一个好的实践,但我不知道我还能做什么。 我的控制器目前负责我的所有不同页面(这是一个小型网站),我认为在控制器中的每个页面功能结束时调用我的twitter类,然后将其发送到视图不是一个很好的做法 通常,我在控制器中执行此操作: <?php fu

我在CI中有一个库,用于检索我最新的twitter更新。它具有将我的最新更新作为对象发送到控制器的功能

我想在我的页面的页脚上显示这些twitter更新,以便它们随时可见

现在我的问题是,我如何直接从一个角度来称呼这些?我知道这在MVC中不是一个好的实践,但我不知道我还能做什么。 我的控制器目前负责我的所有不同页面(这是一个小型网站),我认为在控制器中的每个页面功能结束时调用我的twitter类,然后将其发送到视图不是一个很好的做法

通常,我在控制器中执行此操作:

<?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);
}