2011-05-06 3 views
0

지금까지 각 페이지에 대한 메서드를 사용하여 사이트 섹션에 대해 하나의 컨트롤러를 만들었습니다. 대부분 정적 페이지이므로 많은 로직이나 모델이 필요하지 않았습니다.코드 점화 기 : 별도의 컨트롤러 또는 하나를 넣으시겠습니까?

그러나 일부 페이지는 기능이 복잡하고 자체 모델이 필요한 경우 해당 페이지를 자체 컨트롤러로 분리해야합니까? 또는 하나의 컨트롤러에 그들을 유지하고 메서드 당 모델을로드하는 방법이 있습니다. 아마도 잘못된 작업입니다.

답변

3

전적으로 jondavidjohn's answer에 동의합니다. 나는 지금 당장 당신을 위해 일하는 것을 제안하고, 오버 헤드 나 "올바른"일을 너무 많이 걱정하지 마십시오. Codeigniter는 매우 희박합니다.이 시점에서 최적화에 대해 걱정하지 마십시오. 원하는 방식으로 모든 작업을 수행하십시오.

첫 번째 Codeigniter 프로젝트를 타고 가능한 한 최선을 다하지만, 그냥 던져 버리는 앱이라고 생각하십시오. 작업 할 때마다 사용 방법에 대해 더 배우고, 특히 읽고 계속 질문 할 경우 특히 유용합니다.

귀하의 문자 적 ​​질문에 대답하려면 : 아니오, 방법 당 모델을로드하는 데 문제가 없습니다. 실제로 Controller의 __construct에로드하는 것보다 "좋을"수 있습니다. 필요한 것만로드 할 수 있기 때문입니다. 그러니 걱정하지 마세요.

지금까지, 나는 각 페이지에 대한 방법과 사이트 섹션에 대한 하나의 컨트롤러를 생성 - 대부분의 정적 페이지

가이 아무 문제가 없지만 일을 쉽게하기 위해이, 당신은을 사용할 수 있습니다 귀하의 정적 페이지 각각에 대해 동일한 방법을 사용하고 귀하의 URL을 동일하게 유지하십시오. 이런 식으로 뭔가 :이 페이지 컨트롤러에 URL /page/my_first_page지도를 인수 my_first_pageindex()를 부를 것이다

class Pages extends CI_Controller { 

    public function __construct() 
    { 
     parent::__construct(); 
    } 

    function index($page) 
    { 
     $this->load->view("pages/$page"); 
    } 

} 

// config/routes.php 
$route['page/(:any)'] = 'pages/index/$1'; 

. 그런 다음 동적 데이터가없는 모든 정적 페이지에이를 사용할 수 있습니다. 이 작업을 더 많이 수행 할 수는 있지만 모든 정적 페이지에 대해 새 메서드를 작성하지 않도록 선택할 수있는 옵션 중 하나의 예입니다.

0

메서드 당 모델을로드 할 수 있습니다. 그것을하는 것은 나쁜 습관이 아닙니다.

$this->load->model('your_model'); 

모델은 일반적으로 너무로드가 집중되지 않습니다. 혹시 단 한 번 물어 보지 않으려면 모델 로딩에 대해 너무 걱정하지 않아도됩니다.

3

Codeigniter는 컨벤션이 적기 때문에 이와 같은 의견을 제기합니다.

는 일반적으로 나는 항상 더 모듈화덜 모듈화보다 더 나은 것을 권합니다 불구하고 당신은 결코을 과도하게 구성 할 수 있습니다. 무언가가 아니다해서

"잘못된는"그것은 최고의하게 doen't.

당신이 그것을 유지할 사람이기 때문에 결국 결정할 수 있습니다.

+0

"결코 정리할 필요가 없습니다"라는 것을 기억하십시오! –

0

각 페이지마다 특정 컨트롤러를 사용하는 것이 좋으므로 응용 프로그램이 가볍고 모델을 만들 필요가 있습니다. 따라서 응용 프로그램의 기능을 확장하면 쉽게 개발할 수 있습니다.

 class Location extends CI_Controller { 
public function __construct() 
{ 
parent::__construct(); 
$this->load->library('session'); 
    } 
public function index() 
{ 
$data['title'] = "Hello world"; 
$this->load->view('locale_view', $data);   
} 
    } 
관련 문제