2013-11-14 1 views
0

저는 매우 큰 웹 사이트를 구축하기 위해 프레임 워크로 codeIgniter를 사용하고 있습니다. 모든 것이 좋습니다. 모델을 사용하여 데이터베이스에서 데이터를주고받습니다. 그러나 최근에 나에게 혼란스러운 질문이 있습니다. 페이지 전체에서 루프에서 데이터를 가져 오는 과정에서 모델을 사용하지 않습니다.CodeIgniter 시스템에서 내 MODEL 규칙은 어디에 있습니까?

예를 들어, 오른쪽 사이드 바에 대해 루프를 사용하여 범주 목록을 가져옵니다. 이제이 루프는 배열을 기반으로하며이 배열은 데이터베이스에서 검색 한 데이터 집합입니다. 이 DB로부터의 데이터 검색은 컨트롤러에서 처리됩니다. 이 올바른지? 또는 나는 DB에서 그리고 MODELS에서만 모든 데이터를 절대적으로 얻어야합니까? 난 단지 등록/로그인/뉴스 레터/주문 등을 위해 모델을 사용하기 때문에

다음

또한 DB 데이터를 취득하는 내 컨트롤러 중 하나입니다

$this->niazer-> 데이터베이스 데이터를 얻을 담당하는 라이브러리 (단독

그것은 당신이 절대적으로 DB에서 데이터를 얻을해야한다는 엄격한 아무것도 만 만 모델 없습니다 문제를 없어 내 현재 프로젝트)

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

     } 

} 
+0

niazer가 귀하의 모델입니다. 예를 들어,'get_ads()'와'get_news()'가 컨트롤러에서 직접하는 일을하는 것이 좋겠지 만 괜찮지는 않습니다. –

답변

3

를 DB에 액세스 할 수 있습니다

엄격하게 구현해야하는 규칙 같은 그 아무것도 그것은 당신에 대한 좋은 연습과 원칙없는 경우 IMO가 잘못하고있다.

모델은 컨트롤러에게 사용자가 요청대로의 데이터 표현 (등 메시지, 도서 목록, 사진 앨범 등)를 제공합니다. 이 데이터 모델은 사용자에게 을 어떻게 표시 하든지 상관없이 동일하므로 을 렌더링 할 수있는 뷰를 선택할 수 있습니다. 이 모델에는 응용 프로그램의 가장 중요한 부분 인 논리, 처리중인 문제에 적용되는 논리 ( 포럼, 상점, 은행 등)가 들어 있습니다.

컨트롤러에는 응용 프로그램 자체에 대한 내부 조직 논리가 더 많이 포함되어 있습니다 (자세한 내용은 정리 작업과 동일).

여기에 대해서는이 글을 쓸 수 없지만 찾고있는 내용은 this answer입니다. 나는 심지어 MODEL을 사용하지 않은하지만 내 응용 프로그램이 잘 작동하지만 지금은 규칙과 원칙 (SOLID)을 따르도록 분명히 좋은 이유가, 규칙을 따라야

CI와 프로그래밍의 내 초기에, 정직합니다. 그래서, 지금하고있는 것처럼 그것을 할 수 있습니다. 아무도 당신을 강요하지 않을 것입니다.

+1

물론 당신 말이 맞습니다. 나는 그것을 아주 잘 알고 있었고 경험있는 사람이 그것을 대답해야했습니다. MVC 이상 구현은 모든 이론과 마찬가지로 완벽하게 이해되기 때문에. 뷰에서 DB에 액세스 할 수도 있지만 이것은 MVC가 아닌 것입니다. MVC에 가까워 질수록 프로젝트의 편리 성이 높아집니다. –

+0

잘 @ 모스 타파 탈레 :-) –

2

위해 만든

그들은 일반적으로 우리의 편의를 위해 해당로 구분되어 있지만, 당신은 컨트롤러도

관련 문제