Php CodeIgniter MVC-让模型服务于视图是一种好的实践吗?

Php CodeIgniter MVC-让模型服务于视图是一种好的实践吗?,php,codeigniter,model-view-controller,Php,Codeigniter,Model View Controller,我正在使用CodeIgniter3开发一个新闻网站。几乎每页都有一个布告栏所有页面的内容都是相同的。我已经为这个部分创建了一个名为“noticeboard.php”的视图。不同的页面由不同的控制器控制。i、 e.主页、帖子、画廊、投票等。这里使用控制器的问题是,我需要在每个控制器上执行两个操作,以生成布告栏HTML 控制器看起来像: <?php defined('BASEPATH') OR exit('No direct script access allowed'); class So

我正在使用CodeIgniter3开发一个新闻网站。几乎每页都有一个布告栏所有页面的内容都是相同的。我已经为这个部分创建了一个名为“noticeboard.php”的视图。不同的页面由不同的控制器控制。i、 e.主页、帖子、画廊、投票等。这里使用控制器的问题是,我需要在每个控制器上执行两个操作,以生成布告栏HTML

控制器看起来像:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class SomeController extends CI_Controller {        

    /* .. */

    public function index() {
        /* .. */
        $noticeboard['notice'] = $this->noticeboard_model->getNotice(); // Gets Notice's HTML
        $data['noticeboard'] = $this->load->view( 'sidebar/noticeboard', $noticeboard, TRUE );
        /* .. */
        /* $data is served to main page template */
    }

    /* .. */

}
<div class="noticeboard">
    <h3>Notice</h3>
    <?php echo $notice; ?>
</div>

我可以通过在Noticeboard模型上使用
getNoticeboardHTML()
并让模型获取视图并返回HTML来解决这种代码冗余问题。但这是一种好的做法吗?

理论上讲,不是。你不应该这样做。这违反了MVC。您可以使用库类来避免代码重复。

最好创建一个自定义库并将
getNoticeboardHTML()
放在该类中。在那之后,你可以在任何需要的地方打电话。不要用HTML弄脏你的模型