The स्किनी कंट्रोलर्स, फैट मॉडल्स ’ की अवधारणा और सामान्य स्वीकृति को देखते हुए कि आउटपुट के लिए डेटा की आवश्यकता होने पर व्यू सीधे मॉडल पर कॉल कर सकते हैं, क्या किसी को व्यूज और कंट्रोलर के भीतर अनुरोधों के parts प्राप्त और प्रदर्शन’ के हिस्सों को संभालने पर विचार करना चाहिए? उदाहरण के लिए (कोड को सामान्य रखने का प्रयास):
नियंत्रक
<?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 रिक्वेस्ट को हैंडल करना, एक्सेस राइट्स और परमिशन आदि को मैनेज करना) और साथ ही मॉडल्स को दोबारा और बाकी सभी अच्छे सामान को रखना।
यदि किसी उपयोगकर्ता को परिणामों को फ़िल्टर करने की अनुमति देने के लिए इस उदाहरण को बढ़ाया गया था, तो नियंत्रक केवल फ़ॉर्म से POST को हैंडल करेगा और फ़िल्टर को व्यू में पास करेगा, जो इस बार फिर से डेटा का अनुरोध करेगा, फ़िल्टर के साथ।
क्या यह एमवीसी एप्लिकेशन विकसित करने का एक वैध तरीका है? या क्या मुझे नियंत्रक द्वारा निभाई जाने वाली भूमिका का एक महत्वपूर्ण हिस्सा दिखाई दे रहा है?
offers_model->get_latest()
? नियंत्रक में हर विधि में इसे जोड़ना (जैसा कि मैंने पहले मूर्खतापूर्ण प्रयास किया है) लगता है कि ओवरकिल और विशिष्ट रूप से अन-डीआरवाई।