这违反了MVC的原则吗?代码点火器应用

时间:2014-02-09 15:43:06

标签: codeigniter model-view-controller codeigniter-2

我正在学习代码Igniter,并且很难遵循MVC模式。以下是情景。

MODEL:文章

public function get_all_ideas(){
    $this->db->select('article_title, article_content');
    $query = $this->db->get('article');
    return $query;
}

在这里,我创建了一个从表中提取所有文章的函数。

控制器:

public function articles(){
    $this->load->model('article');
    $data['articles'] = $this->article->get_articles();

    $this->load->view('all_article', $data);
}

在这里,我在控制器中创建了一个函数,它加载模型并将查询结果传递给视图文件'all_article'。

查看:all_article

<html....
    <?php
    foreach($articles->results() as $article){
        ?>
        <div id="box">
            <?php echo $article->article_content;?>
        </div>
    <?php  
    }
    ?>
....</html>

我认为我在上面的代码中以正确的方式遵循了MVC模式。查看文件现在将显示文章的所有内容。我已经设置了'box'的css

<div id="box">

这样他们就是一种小型的预览框。另外,我发现CI中有一个文本助手word_limiter()限制了单词。由于这些框只显示文章的预览,我计划使用word_limiter()。现在这是问题所在。

如果我要限制这个词。然后我将像这样

在SAME VIEW FILE中加载一个帮助类

查看:

<div id="box">
    <?php
        $this->load->helper('text'); 
        echo word_limiter($article->article_content, 40);
    ?>
</div>

您可能已经注意到我正在加载VIEW文件中的帮助程序类,根据MVC的原理这是不正确的。因为这样的逻辑必须在CONTROLLER中。但是,因为必须在每个循环中调用方法word_limiter(),我没有看到将它放入CONTROLLER的方法。我知道,这样做违反了MVC的原则。

应该怎么做?需要帮助

1 个答案:

答案 0 :(得分:1)

只需使用autoload(application / config / autoload.php)。 您可以自动加载该文本助手,然后在任何地方使用它。