Учитывая концепцию «тощих контроллеров, толстых моделей» и общее признание того, что представления могут напрямую вызывать модели, когда требуются данные для вывода, следует ли рассматривать обработку частей «получить и отобразить» запросов в представлениях, а не контроллер? Например (попытка сделать код достаточно общим):
контроллер
<?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>
Для меня это имеет некоторый смысл в тех случаях, когда запрос по сути является просто представлением. Почему Контроллер должен собирать и передавать данные в View, если он может просто извлечь их сам? Это оставляет контроллер открытым только для обработки на уровне приложения (например, обработка запросов GET / POST, управление правами доступа и разрешениями и т. Д.), А также для сохранения возможности многократного использования моделей и других полезных вещей.
Если этот пример был расширен, чтобы позволить пользователю фильтровать результаты, контроллер просто обработает POST из формы и передаст фильтры представлению, которое затем снова запросит данные, на этот раз с фильтрами.
Это правильный подход к разработке приложения MVC? Или я упускаю из виду важную роль, которую должен играть Контроллер?


offers_model->get_latest()быть сделан вызов ? Добавление этого в каждый метод в контроллере (как я глупо пытался раньше) кажется излишним и явно не СУХИМЫМ.