दरअसल, इसे थोड़ा सा शोध करने के बाद, मैं इस निष्कर्ष पर पहुंचा कि एमवीसी में हेडर और पाद लेख शामिल करने का सबसे अच्छा अभ्यास एक तीसरा विकल्प है - अर्थात आधार नियंत्रक का विस्तार करना। इससे आपको एचटीटीटी के सुझाव की तुलना में थोड़ा अधिक लचीलापन मिलेगा, खासकर यदि आप एक बहुत ही मॉड्यूलर लेआउट बना रहे हैं (न केवल हेडर और पाद लेख, साइडबार पैनल, गैर स्थैतिक मेनू इत्यादि)।
सबसे पहले, बेस_कंट्रोलर क्लास को परिभाषित करें, जिसमें आप अपने पृष्ठ तत्वों (हेडर, पाद लेख इत्यादि) को जोड़ते हैं।) एक आउटपुट स्ट्रिंग के लिए:
class Base_controller extends Controller
{
var $_output = '';
function _standard_header($data=null)
{
if (empty($data))
$data = ...; // set default data for standard header here
$this->_output .= $this->load->view('header', $data, true);
}
function _admin_header($data=null)
{
if (empty($data))
$data = ...; // set default data for expanded header here
$this->_output .= $this->load->view('admin_header', $data, true);
}
function _standard_page($data)
{
$this->_standard_header();
$this->_output .=
$this->load->view('standard_content', $data, true);
echo $this->_output; // note: place the echo statement in a
// separate function for added flexibility
}
function _page_with_admin_header($data)
{
$this->_admin_header($data);
$this->_output .=
$this->load->view('standard_content', $data, true);
echo $this->_output;
}
}
फिर, अपने पेज नियंत्रकों में, बस आधार वर्ग को बढ़ाने और अपने कार्यों कॉल पेज बनाने के लिए।
class Page_controller extends Base_controller
{
function index()
{
$data = ...; // Set content data here
$this->_standard_page($data);
}
function admin()
{
$data = ...; // Set content and header data here
$this->_page_with_admin_header($data);
}
}
एक आधार नियंत्रक का उपयोग करना, आप अपने व्यक्तिगत पेज नियंत्रकों में बहुत साफ कोड को प्राप्त करने और पृष्ठ के तत्वों (दोनों विचारों और नियंत्रकों में कोड पुन: उपयोग के लिए अनुमति देता है) के लिए अलग दृश्य हो सकते हैं। तुम सब करने की ज़रूरत है अपने सामान्य पेज 'वर्गों' अपने आधार नियंत्रक में कार्य के रूप में (आप 'टुकड़े' कहते हैं करने के लिए परीक्षा हो सकती है क्या) को परिभाषित है।
और यदि बेस नियंत्रक अनियंत्रित रूप से बढ़ना शुरू कर देना चाहिए (जो बड़ी साइटों पर हो सकता है), तो आप अपने कुछ कम-सामान्य कार्यों को उप-वर्गों में रखकर पुनर्व्यवस्थित कर सकते हैं, और संबंधित पेज नियंत्रकों को इसके बजाय उनको बढ़ाएं मूल आधार नियंत्रक।
का आनंद लें!
/जेन्स रोलाण्ड
के बाद से अपने प्रश्न CodeIgniter के बारे में था - मैं तो बस करने के लिए आप अग्रेषित करना चाहते कैसे Zend फ्रेमवर्क इस संभालता है: http://framework.zend.com/manual/en/zend.layout.html – leek