मंगलवार, 23 फ़रवरी 2010

व्यूज़ Views - कोड इग्नाइटर

एक view एक वेब पेज हो सकता है या पेज का टुकड़ा हो सकता है जैसे हेडर,फ़ूटर, साइडबार आदि. असल में व्यू को आप किसी अन्य व्यू में भी जोड़ सकते हैं और उसे किसी अन्य व्यू में भी.

व्यूज को कभी सीधे नही बुलाया जाता है. उन्हे हमेशा कंट्रोलर के द्वारा लोड किया जाना चाहिये. याद रखें कि MVC Framework में, कंट्रोलर ट्रैफ़िक पुलिस की तरह कार्य करता है, अत: यह किसी व्यू के आनयन के लिये जिम्मेदार होता है. यदि आपने कंट्रोलर पेज के बारे में नही पढ़ा है तो आगे बढ़ने से पहले उसे पढिये.

उदाहरणों के उपयोग से आपने कंट्रोलर पेज बना लिया है, चलिये उसमें व्यू जोड़ते हैं.

एक व्यू बनाना

अपने टेक्स्ट एडीटर का प्रयोग करते हुये एक फ़ाइल blogview.php बनाइये, और उसमें निम्नलिखित को रखिये.

<html>

<head>

<title>My Blog</title>

</head>

<body>

<h1>Welcome to my Blog!</h1>

</body>

</html>

अब इस फ़ाइल को application/views/ फ़ोल्डर में सुरक्षित कीजिये.

एक व्यू को लोड करना

किसी विशेष व्यू को लोड करने के लिये आपको निम्नलिखित फ़ंग्शन का प्रयोग करना होगा.

$this->load->view('name');

यहां name आपकी व्यू फ़ाइल का नाम है. नोट: आपको यहां .php एक्सटेंशन बताने की जरूरत नही होती है जब तक कि आप .php के अलावा कुछ और ना लोड कर रहे हों.

अब आपने जो पहले blog.php नाम की एक कंट्रोलर फ़ाइल बनाई थी उसे खोलें, तथा उसमें echo कथन की जगह में निम्न लिखित व्यू लोडिंग फ़ंग्शन लिख दें:

<?php class Blog extends Controller { function index() { $this->load->view('blogview'); } } ?>

यदि आप अपनी साइट में पिछले यूआरएल में जायेंगे तो आप अपना नया व्यू देखेंगे. वो यूआरएल कुछ ऐसा दिखता था:

example.com/index.php/blog/

कई व्यूज़ को एक साथ लोड करना

कोड इग्नाइटर $this->load->view के कई अनुरोधों को बड़ी ही बुद्धिमत्ता के साथ पूरा करता है. यदि एक से अधिक अनुरोध होते हैं तो वो एक के बाद एक संलग्न्न हो जाते हैं. उदाहरण के लिये यदि आप एक हेडर व्यू, एक मीनू व्यू, एक कंटेंट व्यू तथा एक फ़ूटर व्यू चाहते हैं तो उसे कुछ इस प्रकार लिखा जायेगा:

<?php
class Page extends Controller {
   function index()
   {
      $data['page_title'] = 'Your title';
      $this->load->view('header');
      $this->load->view('menu');
      $this->load->view('content', $data);
      $this->load->view('footer');
   }
}
?>

ऊपर के उदाहरण में हमनें एक $data नाम का वैरिएबल का प्रयोग किया है, जिसके बारे में आप आगे जानेंगे.

व्यूज़ को सब-फ़ोल्डरों में रखना

यदि आप चाहें तो आपकी व्यू फ़ाइलों को भी सब-फ़ोल्डरों/उप-फ़ोल्डरों में रखा जा सकता है. आप जब ऐसा करेंगे तो आपको व्यू लोड करते समय फ़ोल्डर का नाम भी शामिल करना पड़ेगा.

$this->load->view('folder_name/file_name');

व्यू में डायनेमिक डाटा जोड़ना

आंकड़े हमेशा एरे या आब्जेक्ट के तौर पर कंट्रोलर से व्यू की ओर चलते हैं. इन्हे व्यू लोडिंग फ़ंग्शन में हमेशा दूसरे पैरामीटर के तौर पर गुजारा जाता है. यहां एक एरे का उदाहरण दिया जा रहा है:

$data = array(
               'title' => 'My Title',
               'heading' => 'My Heading',
               'message' => 'My Message'
          );
$this->load->view('blogview', $data);

यहां एक आब्जेक्ट का उदाहरण दिया जा रहा है:

$data = new Someclass();
$this->load->view('blogview', $data);

कृपया ध्यान दें: यदि आप आब्जेक्ट का प्रयोग करते हैं तो क्लास के वैरिएबल एरे के अवयवों के रूप में बदल जायेंगे.

चलिये आपकी कंट्रोलर फ़ाइल से शुरू करते हैं. इसे खोलिये और यह कोड उसमें लिखिये:

<?php class Blog extends Controller {

function index() {

$data['title'] = "My Real Title";

$data['heading'] = "My Real Heading";

$this->load->view('blogview', $data);

}

} ?>

अब अपनी व्यू फ़ाइल खोलिये और जिन शब्दों का प्रयोग आपने एरे की कुंजियों/की के तौर पर किया है उन्हे वैरिएबल के तौर पर लिखिये:

<html>
<head>
<title><?php echo $title;?></title>
</head>
<body>
<h1><?php echo $heading;?></h1>
</body>
</html>

अब अपने पेज को ब्राउजर में खोलिये, आप देखेंगे कि आपके वैरिएबल एरे की कुंजियों/की से बदल दिये गये हैं.

लूप बनाना

आप जिस डाटा एरे को अपनी व्यू फ़ाइलों में भेजते हैं वह केवल साधारण वैरिएबलों तक सीमित नही है. आप उससे बहु-आयामी एरे भी गुजार सकते हैं. इनका प्रयोग लूप के द्वारा कई सारी रो बनाने के लिये किया जा सकता है. जैसे कि आप अपने डाटाबेस से जब कोई डाटा निकालते हैं तो यह सामान्यत: बहु-आयामी एरे के रूप में होता है.

यहां एक सरल सा उदाहरण दिया जा रहा है. निम्नलिखित कोड को अपने कंट्रोलर में जोडे़ं:

<?php
class Blog extends Controller {
function index() {
$data['todo_list'] = array('Clean House', 'Call Mom', 'Run Errands');
$data['title'] = "My Real Title";
$data['heading'] = "My Real Heading";
$this->load->view('blogview', $data);
}
} ?>

अब अपनी व्यू फ़ाइल को खोलें और उसमें लूप बनायें:

<html>

<head>

<title><?php echo $title;?></title>

</head>

<body>

<h1><?php echo $heading;?></h1>

<h3>My Todo List</h3>

<ul>

<?php foreach($todo_list as $item):?>

<li><?php echo $item;?></li>

<?php endforeach;?>

</ul>

</body>

</html>

व्यूज़ को डाटा के रूप में प्राप्त करना

आप एक तीसरे वैकल्पिक पैरामीटर के द्वारा अपने व्यू लोडिंग के फ़ंग्शन के व्यवहार को बदल सकते हैं ताकि व्यू से निकलने वाले डाटा को ब्राउजर में भेजने की बजाय किसी वैरिएबल में सुरक्षित किया जा सके. यदि आप इस डाटा को किसी प्रकार से प्रोसेस करना चाहते हैं तो यह वैकल्पिक पैरामीटर उपयोगी सिद्ध होगा. यदि आप पैरामीटर को true कर देते हैं तो यह डाटा ब्राउजर में भेजने की बजाय सीधे उपयोग हेतु दे देगा. अत: अगर आप इसे true किया हुआ है तो इसके साथ एक वैरिएबल निर्दिष्ट करना ना भूलें.  

$string = $this->load->view('myfile', '', true);

कोई टिप्पणी नहीं:

एक टिप्पणी भेजें

इस ब्लाग में प्रकाशित सामग्री कापीराईट द्वारा सुरक्षित है. बिना अनुमति इसका किसी भी प्रकार से अन्यत्र प्रयोग/प्रकाशन मूल रूप में/बदल कर उपयोग नही किया जा सकता है.

हिंदी में तकनीकी लेखन को प्रोत्साहित करें

please donate अभी तक वेब डेवलपमेंट अथवा प्रोग्रामिंग आदि से संबंधित जानकारी पर अंग्रेजी का एकाधिकार रहा है. भारत में इतने आई टी गुरू होने के बावजूद भारतीय भाषाओं में इस विषय पर लेखन नगण्य है. इस ब्लाग के माध्यम से मैं हिन्दी भाषिओं तक वेब डेवलपमेंट का ज्ञान पहुंचाने की कोशिश कर रहा हूं. अत: आप सभी से अनुरोध है कि हिंदी में तकनीकी लेखन के लिये सहयोग करें
मैं वेबसाइटें भी बनाता हूं. यदि आपको बनवानी हो तो बताएं.

ARCHIVES

इस ब्लॉग में खोजें

फ़ॉलोअर