Với khái niệm 'bộ điều khiển mỏng, mô hình béo' và sự chấp nhận chung rằng Chế độ xem có thể gọi trực tiếp trên Mô hình khi yêu cầu dữ liệu cho đầu ra, bạn có nên xem xét xử lý các phần 'nhận và hiển thị' các yêu cầu trong Chế độ xem chứ không phải Bộ điều khiển? Ví dụ: (cố gắng giữ mã khá chung chung):
Bộ điều khiển
<?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');
}
}
Lượt xem
<?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>
Đối với tôi, điều này ít nhất có ý nghĩa trong trường hợp yêu cầu về cơ bản chỉ là Chế độ xem. Tại sao Bộ điều khiển phải thu thập và chuyển dữ liệu đến Chế độ xem khi nó có thể tự truy xuất dữ liệu? Điều này để Bộ điều khiển mở hoàn toàn để xử lý 'Cấp ứng dụng' (ví dụ: xử lý các yêu cầu GET / POST, quản lý quyền truy cập và quyền, v.v.) cũng như giữ cho các Mô hình có thể sử dụng lại và tất cả các nội dung tốt khác.
Nếu ví dụ này được mở rộng để cho phép người dùng lọc kết quả, Bộ điều khiển sẽ chỉ xử lý POST từ biểu mẫu và chuyển các bộ lọc sang Chế độ xem, sau đó sẽ yêu cầu lại dữ liệu, lần này với các bộ lọc.
Đây có phải là một cách tiếp cận hợp lệ để phát triển một ứng dụng MVC? Hay tôi đang xem một phần quan trọng của vai trò mà Người điều khiển nên đóng?
offers_model->get_latest()
đâu? Thêm phương thức này vào mọi phương thức trong bộ điều khiển (như tôi đã cố gắng một cách dại dột trước đây) có vẻ như quá mức cần thiết và rõ ràng là không KHÔ.