0

我正在使用 codeIgniter 作为我的框架来构建一个非常大的网站。一切安好。我使用模型从/向数据库获取/发送数据。但是最近一个问题让我很困惑。在从整个页面的循环中获取数据时,我不使用模型。

例如,对于右侧边栏,我使用循环来获取类别列表。现在,这个循环基于一个数组,而这个数组是从数据库中检索到的一组数据。从 DB 中检索的数据在控制器中进行处理。它是否正确?或者我绝对应该只从数据库中获取任何数据,并且只在模型中?因为我只将模型用于注册/登录/时事通讯/订单等。

这是我的控制器之一,它也负责获取数据库数据:

$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);

        }

}
4

2 回答 2

3

如果它是关于良好实践和原则的,那么你做错了,IMO。

该模型为控制器提供了用户请求的任何内容(消息、书籍列表、相册等)的数据表示。无论您希望如何将其呈现给用户,此数据模型都是相同的,这就是您可以选择任何可用视图来呈现它的原因。该模型包含应用程序逻辑中最重要的部分,即适用于您正在处理的问题(论坛、商店、银行等)的逻辑。

控制器包含应用程序本身的更多内部组织逻辑(更像是管家)。

我不能在这里写这些东西,但我认为这个答案涵盖了你正在寻找的东西。

老实说,在我早期的编程中,CI我什至没有使用 a MODEL,但我的应用程序运行良好,但现在我遵守规则,显然有充分的理由遵守规则和原则 ( SOLID )。所以,你可以像现在这样去做,没有人会强迫你。

于 2013-11-14T15:04:43.033 回答
2

那没问题

您绝对应该仅从 DB 且仅在 MODELS 中获取任何数据,这并不严格

它们通常只是为了我们的方便而被分隔,但这不像是应该严格执行的规则

您也可以访问控制器中的数据库

于 2013-11-14T14:53:34.637 回答