Dengan konsep 'pengontrol kurus, model gemuk' dan penerimaan umum bahwa Tampilan dapat langsung memanggil Model ketika membutuhkan data untuk output, haruskah seseorang mempertimbangkan untuk menangani bagian 'dapatkan dan tampilkan' permintaan dalam Views dan bukan Pengontrol? Misalnya (berupaya menjaga kode cukup umum):
Pengendali
<?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');
}
}
Melihat
<?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>
Bagi saya, ini masuk akal setidaknya dalam kasus-kasus di mana permintaan pada dasarnya hanya sebuah Tampilan. Mengapa Pengendali harus mengumpulkan dan meneruskan data ke Tampilan saat itu hanya dapat mengambilnya sendiri? Ini membuat Pengendali terbuka untuk pemrosesan murni 'Tingkat Aplikasi' (misalnya, menangani permintaan GET / POST, mengelola hak akses dan izin, dll.) Serta menjaga agar Model dapat digunakan kembali dan semua hal baik lainnya.
Jika contoh ini diperluas untuk memungkinkan pengguna untuk memfilter hasil, Pengontrol hanya akan menangani POST dari formulir dan meneruskan filter ke tampilan, yang kemudian akan meminta data lagi, kali ini dengan filter.
Apakah ini pendekatan yang valid untuk mengembangkan aplikasi MVC? Atau apakah saya mengabaikan bagian penting dari peran yang harus dimainkan oleh Pengendali?
offers_model->get_latest()
dibuat? Menambahkan ini ke setiap metode di controller (seperti yang saya coba sebelumnya dengan bodoh) sepertinya berlebihan dan jelas-jelas KERING.