Где мое правило MODEL здесь в системе CodeIgniter?

Я использую codeIgniter в качестве основы для создания очень большого сайта. Все отлично. Я использую модели для получения / отправки данных из / в базу данных. Но вопрос недавно смутил меня. При получении данных из циклов по всей странице я не использую модели.

Например, для правой боковой панели я использую цикл, чтобы получить список категорий. Теперь этот цикл основан на массиве, и этот массив представляет собой набор данных, извлеченных из базы данных. Этот поиск данных из БД обрабатывается в контроллере. Это правильно? Или я должен абсолютно получить какие-либо данные из БД только и только в МОДЕЛЯХ? Поскольку я использую Модели только для регистрации / входа в систему / рассылки новостей / заказов и т. Д.

Вот один из моих контроллеров, который также отвечает за получение данных БД:

$this->niazer-> библиотека, которая отвечает за получение данных базы данных (создана исключительно для моего текущего проекта)

<?php
/**
    This controller is the basic controller to render the webpages. Now we have the 
**/
class show extends CI_Controller
{
       function index()
        {                                       

            /** getting list of categories **/

            $cats = $this->niazer->get_pa('all'); // getting all the parents
            $x= $this->niazer->get_child($cats);    
            $data['main_cats'] = $cats;     
            /** getting list of categories **/

            /** getting list of special ads with 5-7 stars **/
            $special_ads_var = $this->niazer->get_ads(array("star-min"=>5, "star-max"=>7, "row"=>5)); // getting all the parents
            $data['special_ads'] = $special_ads_var;    
            /** end of special ads list **/


            /** getting list of special ads with 5-7 stars **/
            $special_ads_var = $this->niazer->get_news(array("limit"=>20)); // getting all the parents




            $theme_name = $this->theme->get_theme_with_slash(false);                                    

            $this->load->view($theme_name.'header', $data);
            $this->load->view($theme_name.'index', $data);
            $this->load->view($theme_name.'footer', $data);

        }

}

2 ответа

Решение

Если речь идет о хорошей практике и принципах, то вы делаете это неправильно, ИМО.

Модель предоставляет контроллеру представление данных того, что запросил пользователь (сообщение, список книг, фотоальбом и т. Д.). Эта модель данных будет одинаковой независимо от того, как вы захотите представить ее пользователю, поэтому вы можете выбрать любое доступное представление для ее отображения. Модель содержит наиболее важную часть логики вашего приложения, логику, которая относится к проблеме, с которой вы работаете (форум, магазин, банк и т. Д.).

Контроллер содержит более внутреннюю организационную логику для самого приложения (больше похоже на ведение домашнего хозяйства).

Я не могу писать об этих вещах здесь, но я думаю, что этот ответ охватывает то, что вы ищете.

Если честно, в мои первые годы программирования с CI Я даже не использовал MODEL но мои приложения работали хорошо, но теперь я следую правилам, очевидно, есть веские причины следовать правилам и принципам ( SOLID). Таким образом, вы можете сделать это, как вы делаете это сейчас, никто не заставит вас.

Это не проблема

Ничего страшного в том, что вы должны получать абсолютно любые данные только из БД и только в МОДЕЛЯХ.

Они обычно разделены этим только для нашего удобства, но это не что иное, как правило, которое должно строго соблюдаться

Вы можете получить доступ к БД в контроллерах также

Другие вопросы по тегам