Php CodeIgniter MVC-让模型服务于视图是一种好的实践吗?
我正在使用CodeIgniter3开发一个新闻网站。几乎每页都有一个布告栏所有页面的内容都是相同的。我已经为这个部分创建了一个名为“noticeboard.php”的视图。不同的页面由不同的控制器控制。i、 e.主页、帖子、画廊、投票等。这里使用控制器的问题是,我需要在每个控制器上执行两个操作,以生成布告栏HTML 控制器看起来像: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
<?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弄脏你的模型