CodeIgniter MVC - это хорошая практика, чтобы модели обслуживали представления?

1

Я разрабатываю новостной сайт с помощью CodeIgniter 3. Почти на каждой странице есть доска объявлений, содержимое которой одинаково на всех страницах. Я создал представление для этого раздела с именем "noteboard.php". И разные страницы контролируются разными контроллерами. т.е. 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 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>

Я мог бы решить этот код избыточности, просто имея getNoticeboardHTML() на обьявлений модели и имеющей модель принести вид и вернуть HTML. Но это хорошая практика?

Теги:
model-view-controller
codeigniter

2 ответа

1
Лучший ответ

Лучше вы создадите пользовательскую библиотеку и поместите getNoticeboardHTML() в этот класс. После этого позвоните туда, где вам нужно. Не загрязняйте свою модель с помощью HTML.

Создать пользовательскую библиотеку

0

Теоретически, нет. Вы не должны это делать. Это нарушение MVC. Вы можете использовать класс библиотеки, чтобы избежать дублирования кода.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню