【问题标题】:CodeIgniter MVC - Is it a good practice to have Models serve views?CodeIgniter MVC - 让模型服务视图是一种好习惯吗?
【发布时间】:2015-07-13 05:04:23
【问题描述】:

我正在使用 CodeIgniter 3 开发一个新闻网站。几乎每个页面都包含一个 公告板,其内容在所有页面上都是相同的。我为此部分创建了一个名为“noticeboard.php”的视图。不同的页面由不同的Controller控制。即 Home、Post、Gallery、Poll 等。这里使用控制器的问题是我需要在每个控制器上执行两个操作以生成公告板 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 */
    }

    /* .. */

}

views/sidebar/noticeboard.php 看起来像:

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

我可以通过在 Noticeboard 模型上简单地使用 getNoticeboardHTML() 并让模型获取视图并返回 HTML 来解决此代码冗余问题。但这是一个好习惯吗?

【问题讨论】:

    标签: php codeigniter model-view-controller


    【解决方案1】:

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

    Create Custom Library

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2016-06-25
        • 1970-01-01
        • 2011-10-21
        • 1970-01-01
        • 2020-12-14
        • 1970-01-01
        • 2017-12-09
        • 1970-01-01
        • 2022-01-23
        相关资源
        最近更新 更多