'스키니 컨트롤러, 뚱뚱한 모델' 의 개념 과 출력을 위해 데이터를 요구할 때 뷰가 모델을 직접 호출 할 수 있다는 일반적인 수용을 감안할 때 컨트롤러가 아닌 뷰 내에서 요청의 'get and display'부분을 처리해야합니까? 예를 들어 (코드를 상당히 일반적으로 유지하려고 시도했습니다) :
제어 장치
<?php
class Invoice extends Base_Controller {
/**
* Get all the invoices for this month
*/
public function current_month() {
// as there's no user input let's keep the controller very skinny,
// DON'T get data from the Model here, just load the view
$this->load->view('invoice/current_month');
}
}
전망
<?php
// directly retrieve current month invoices here
$invoices = $this->invoice_model->get_current_month();
// get some other display-only data, e.g. a list of users for a separate list somewhere on the page
$users = $this->user_model->get_users();
?>
<h1>This month's invoices</h1>
<ul>
<?php foreach ($invoices as $invoice) { ?>
<li><?php echo $invoice['ref']; ?></li>
<?php } ?>
</ul>
나에게 이것은 요청이 본질적으로 단지보기 인 경우 적어도 의미가 있습니다. 컨트롤러가 데이터를 검색 할 수있을 때 데이터를 수집하여 뷰에 전달해야하는 이유는 무엇입니까? 이를 통해 컨트롤러는 순전히 '애플리케이션 레벨'처리 (예 : GET / POST 요청 처리, 액세스 권한 및 권한 관리 등)를 위해 모델을 재사용 할 수있을뿐 아니라 모델을 재사용 가능하고 다른 모든 좋은 것들로 유지할 수 있습니다.
이 예제가 사용자가 결과를 필터링 할 수 있도록 확장 된 경우 Controller는 양식에서 POST를 처리하고 필터를보기로 전달한 다음 이번에는 필터와 함께 데이터를 다시 요청합니다.
이것이 MVC 응용 프로그램 개발에 유효한 방법입니까? 아니면 컨트롤러의 역할에서 중요한 부분을 간과하고 있습니까?
offers_model->get_latest()
합니까? 이것을 어리석게 시도했던 것처럼 컨트롤러의 모든 메소드에 이것을 추가하는 것은 과잉이고 분명히 건조하지 않은 것처럼 보입니다.