Advertisement
  1. Code
  2. CodeIgniter

CodeIgniter में Pagination: एक सम्पूर्ण गाइड

by
Read Time:11 minsLanguages:

Hindi (हिंदी) translation by Ashish Rampal (you can also view the original English article)

किसी भी फुल-स्टैक वेब एप्लिकेशन फ़्रेमवर्क का उपयोग करने का लाभ यह है कि आपको सामान्य कार्यों जैसे इनपुट हैंडलिंग, फ़ॉर्म वेलिडेशन और इसी तरह और के बारे में चिंता करने की ज़रूरत नहीं है, क्योंकि फ्रेमवर्क पहले से उन फीचर्स के लिए रैपर प्रदान करता है। इस प्रकार, यह आपको बार बार एक ही काम करते रहने के बजाय एप्लीकेशन के बिज़नेस लॉजिक पर ही ध्यान करने देता है।

आज, हम CodeIgniter फ्रेमवर्क की एक महत्वपूर्ण लाइब्रेरी के बारे में पता लगाने जा रहे हैं - pagination लाइब्रेरी।

अब मैं उन टॉपिक्स को हाइलाइट करूँगा जिनके बारे में हम इस आर्टिकल के कोर्स में प्रयोग करने जा रहे हैं:

  • एक बेसिक paging को प्रदर्शित करना
  • कस्टमाइज करने वाले ऑप्शंस का विश्लेषण करना
  • Pagination को कॉन्फ़िगर करना

एक बेसिक paging का प्रदर्शन

इस सेक्शन में, हम एक उदाहरण के माध्यम से हम CodeIgniter में paging के उपयोग को देखेंगे। चीजे पूरी तरह से कैसे काम करती हैं ये समझने का यह अच्छा तरीका है।

हमारे उदाहरण में, हम एक बहुत सरल यूज़र की लिस्ट तैयार करेंगे, जिसमें हम यूज़र के रिकॉर्ड को MySQL टेबल से लाएंगे। इस उदाहरण को सफलतापूर्वक चलाने के लिए, सुनिश्चित करें कि आपके यूज़र टेबल में uid और uname फ़ील्ड हैं।

यह सब सेट अप करने के साथ ही हम तैयार हैं।

आगे बढ़ो और निम्न कंटेंट के साथ कंट्रोलर फ़ाइल controllers/Paging.php बनाएं।

इसके बाद, हमें एक मॉडेल फाइल models/Users.php की आवश्यकता होगी जो यूज़र टेबल से रिकॉर्ड को निकालती है।

अंत में, आइए views/user_listing.php पर एक व्यू फ़ाइल बनाएँ जो यूज़र लिस्टिंग को दिखाती है।

अब, आगे बढ़ो और http://your-code-igniter-site/paging/index पर हमारे कस्टम पेज पर पहुंचें और आपको pagination के साथ यूज़र लिस्टिंग दिखनी चाहिए! तो, यह है, हमने इसे कर लिया है! चिंता न करें, मैं आपको इतनी जल्द नहीं छोडूंगा, क्योंकि हम अब कोड के प्रत्येक भाग को अलग अलग करके देखेंगे।

हम मॉडल फाइल models/Users.php से शुरू करेंगे क्योंकि यह वो है जिसे हमारे कंट्रोलर मेथड्स में कॉल किया जायेगा। दो महत्वपूर्ण मेथड्स हैं, get_current_page_records और get_total, जो कि हमारा मॉडल पेज pagination लिंक बनाने के लिए लागू करता है।

चलो get_total मेथड के साथ शुरू करते हैं। यह यूज़र टेबल में कुल रिकॉर्ड की संख्या की गणना करने के लिए उपयोग किया जाता है।

इसके बाद, एक get_current_page_records मेथड है।

दो महत्वपूर्ण आर्गुमेंट हैं जिन्हें आपको get_current_page_records मेथड में ध्यान देना चाहिए। पहला आर्गुमेंट, $limit, रिकॉर्ड की संख्या को बताने के लिए उपयोग किया जाता है जो query को चलाने के दौरान रीटर्न किया जाता है। और दूसरा आर्गुमेंट, $start, रिकॉर्ड के प्रारंभिक इंडेक्स के रूप में कार्य करता है।

तो, जैसा कि आप देख सकते हैं, $start और $limit को वैल्यूज देकर हम रिकार्ड्स को पेजों द्वारा प्राप्त कर सकते हैं। यह paging का सार है, और इस बीच हमने इस आर्टिकल के सबसे महत्वपूर्ण मेथड को कार्यान्वित किया है!

तो, यह हमारा मॉडल था - सरल और सुरुचिपूर्ण!

आगे बढ़ते हैं, आइए हम अपना ध्यान कंट्रोलर फाइल में लगाएं। आगे बढ़ो और कन्स्ट्रक्टर मेथड के कोड को ध्यान दो।

CodeIgniter में pagination का उपयोग करने के लिए, आपको पहली चीज़ जिसे करने की आवश्यकता है वो है pagination लाइब्रेरी को लोड करना। और हम इसे $this->load->library('pagination') का उपयोग करके कर सकते हैं।

हमने URL हेल्पर भी लोड किया है ताकि हम उस हेल्पर द्वारा उपलब्ध कराए गए ग्लोबल हेल्पर के फंक्शन्स का उपयोग कर सकें।

अब, हम अपने कंट्रोलर के दिल को समझने के लिए तैयार हैं—index मेथड।

शुरू करने के लिए, हम यह सुनिश्चित करते हैं कि डेटाबेस ठीक से लोड हो गया है। इसके बाद, हम Users मॉडल लोड करते हैं ताकि हम मॉडल के मेथड का उपयोग कर सकें।

इसके बाद, हम कुछ महत्वपूर्ण वेरिएबल्स को प्रारंभ करते हैं।

वेरिएबल $limit_per_page प्रति पेज की सीमा को निर्धारित करता है। बेशक, आप जैसे चाहे इसे सेट कर सकते हैं; उदाहरण के उदेश्य के लिए यह 1 पर सेट है।

$start_index वेरिएबल में MySQL रिकॉर्ड के प्रारंभिक इंडेक्स को होल्ड करता हैं। जब CodeIgniter pagination लिंको को बनाता है, तो यह डिफ़ॉल्ट रूप से URL में तीसरे सेगमेंट में शुरू के इंडेक्स को जोड़ देता है। आप इस डिफ़ॉल्ट बिहेवियर को बदल सकते हैं, लेकिन हम इस आर्टिकल के अंतिम सेक्शन में देखेंगे, जहां हम कस्टमाइज करने के ऑप्शंस के बारे में चर्चा करेंगे।

अंत में, हम यूज़र टेबल कुल रिकॉर्ड को प्राप्त करने के लिए Users मॉडल के get_total मेथड को कॉल करते हैं, और यह $total_records वेरिएबल में असाइन किया जाएगा।

इसके बाद, हम get_current_page_records मेथड का उपयोग करते हुए वर्तमान पेज के रिकार्ड्स को प्राप्त करते हैं।

इससे पहले कि हम वास्तव में आगे बढ़ें और pagination लिंक्स को बना सकें, हमें paging लाइब्रेरी के initialize मेथड का उपयोग करके कम से कम paging कॉन्फ़िगरेशन को प्रारंभ करने की आवश्यकता है।

और यह pagination लिंक्स को बनाने के लिए न्यूनतम पैरामीटर्स का सेट है।

  • base_url: वह URL जिसका उपयोग pagination लिंक के निर्माण के दौरान किया जाएगा
  • total_rows: रिकॉर्ड की कुल संख्या
  • per_page: हर पेज पर रिकॉर्ड की गणना

अंत में, हम pagination लिंक बनाने के लिए create_links मेथड का उपयोग करते हैं।

इसके बाद हमारे व्यू user_listing को कॉल करना और आउटपुट को देना एक औपचारिकता मात्र है! pagination लिंक्स के साथ यूजर लिस्टिंग को देखने के लिए http://your-code-igniter-site/paging/index URL को रन करें।

तो यह है आपके लिए एक बेहद सरल पर उपयोगी pagination का उदाहरण जिसका आप अपनी जरूरतों के अनुसार विस्तार कर सकते हैं।

अगले सेक्शन में, हम देखेंगे कि अपीयरेंस और फंक्शनलिटी के संदर्भ में आप डिफ़ॉल्ट pagination को कैसे कस्टमाइज कर सकते हैं।

कस्टमाइज करने के ऑप्शंस को एक्स्प्लोर करें

इस सेक्शन में, हम उपलब्ध ऑप्शंस को एक्स्प्लोर करेंगे जो आप उपयोग कर सकते हैं, यदि आप डिफ़ॉल्ट pagination लिंक को कस्टमाइज़ करना चाहते हैं।

URI सेगमेंट

हांलांकि CodeIgniter की paging लाइब्रेरी खुद ही URL से पेजिंग-संबंधित पैरामीटर का पता लगा लेती है, अगर आपके पास अलग URL पैटर्न है, तो आप एक कस्टम वैल्यू निर्धारित कर सकते हैं।

डिजिट लिंक की संख्या

num_links ऑप्शन आपको डिजिट लिंक की संख्या को परिभाषित करने की अनुमति देता है जो pagination लिंक में एक्टिव पेज नंबर के पहले और बाद में दिखाए जाते हैं।

URI सेगमेंट के रूप में पेज नंबर

जब आप paging URI सेगमेंट तक पहुंचते हैं, तो यह डिफ़ॉल्ट रूप से एक शुरुआती इंडेक्स होता है। उदाहरण के लिए, यदि आपके पास प्रति पेज दस रिकॉर्ड हैं, तो paging URI सेगमेंट तीसरे page के लिए 20 होता है। इसके बजाय, यदि आप paging लिंक में वास्तविक पेज नंबर दिखाना चाहते हैं, तो आप use_page_numbers को TRUE पर सेट कर सकते हैं।

बेशक, आपको यह सुनिश्चित करना होगा कि आप URL से प्राप्त पेज नंबर पर आधारित उचित प्रारंभिक इंडेक्स को कैलकुलेट करें।

query स्ट्रिंग को संरक्षित करें

कईं बार, आप अंत में उस स्थिति में होते हैं, जहां आप क्वेरी स्ट्रिंग पैरामीटर को संरक्षित करना चाहते हैं जो pagination से संबंधित नहीं हैं। आप उस फैसिलिटी को प्रयोग करने के लिए reuse_query_string ऑप्शन का उपयोग कर सकते हैं।

ये कुछ ऑप्शंस थे जो आप डिफ़ॉल्ट pagination फंक्शनलिटी को बदलने के लिए उपयोग कर सकते हैं। इसके बाद, हम कुछ अन्य विकल्प देखेंगे जो आपको pagination लिंक डिस्प्ले करने के तरीके को बदलने में मदद करेंगे।

Wrapper Tag

यदि आप किसी अन्य HTML टैग के साथ pagination कोड को व्रैप करना चाहते हैं तो आप इसे full_tag_open और full_tag_close ऑप्शंस का उपयोग करके कर सकते हैं।

यह वाकई उपयोगी हो सकता है, यदि आप pagination लिंक पर कस्टम स्टाइल अप्लाई करना चाहते हैं।

First, Last, Next, और Previous

यदि आप टेक्स्ट को बदलना चाहते हैं जो first, last, next और previous लिंक्स के लिए डिस्प्ले किया जाएगा, तो आप ऐसा भी कर सकते हैं।

इसके अलावा, यदि आप किसी भी HTML टैग से उन अलग अलग लिंक को व्रैप करना चाहते हैं, तो आप ऐसा कर सकते हैं जैसे हमने पूरे paging कोड को व्रैप करने के लिए किया था।

Active Link और Number Link

कभी-कभी, आप एक्टिव लिंक को अलग तरीके से स्टाइल देना चाहते हैं। आप नीचे दिखाए गए wrapper टैग के साथ इसे अप्लाई कर सकते हैं।

उसी तरह, यदि आप डिजिट लिंक्स को किसी के साथ व्रैप करना चाहते हैं:

और वह कस्टमाइज करने की कहानी को समाप्त करता है। वास्तव में, आप आगे बढ़कर http://your-code-igniter-site/paging/custom पर कस्टमाइज़ेशन के उदाहरण देख सकते हैं जो पहले से ही हमारे कंट्रोलर फ़ाइल में शामिल है!

Paging की कॉन्फ़िगरेशन

अब आपको एक डिसेंट pagination को सेटअप करने के लिए किसी भी मॉडल लिस्टिंग की जरूरी कॉन्फ़िगरेशन की जानकारी है। और अधिकतर समय, आप इसे पूरी साइट में एक सामान ही रखना चाहेंगे। आप इसे हासिल करने के लिए क्या करने जा रहे हैं? आप कॉन्फ़िगरेशन कोड की कॉपी बना सकते हैं और उसे प्रत्येक एक्शन में पेस्ट कर सकते हैं जिसके लिए pagination कॉन्फ़िगरेशन की आवश्यकता होती है।

वास्तव में, इस परिदृश्य (scenario) को हैंडल करने के लिए एक बेहतर तरीके का आप प्रयोग कर सकते हैं। आप application/config/pagination.php पर paging कॉन्फ़िगरेशन फ़ाइल बना सकते हैं और अपनी सेटिंग्स को डिफाइन करने के लिए $config वेरिएबल का उपयोग कर सकते हैं।

इसके आधार पर, संशोधित किये गए index मेथड को कुछ इस तरह दिखना चाहिए:

बेशक, total_rows और base_url वेरिएबल एक एक्शन से दूसरे एक्शन पर बदलते रहते हैं, इसलिए आपको उन्हें हर एक्शन में अलग से सेट करना होगा।

इसे पूरा करने के लिए, आपको पहले स्थान पर paging कॉन्फ़िगरेशन को लोड करना होगा।

इसके बाद, आप एक्शन के अनुसार सेटिंग को ओवरराइड कर सकते हैं।

और आपका यह काम हो गया!

तो यह pagination कॉन्फ़िगरेशन की कहानी थी, और यह इस लेख को भी समाप्त करता है!

निष्कर्ष

आज, हमने CodeIgniter में pagination लाइब्रेरी के माध्यम से चल कर देखा।

इस लेख के पहले भाग में, मैंने एक उदाहरण के साथ यह दर्शाया कि कैसे आप एक सरल और उपयोगी paging लाइब्रेरी का उपयोग कर सकते हैं।

उसके बाद, हमने कस्टमाइज करने के ऑप्शंस पर चर्चा की जो pagination के दौरान आपके डिस्पोजल पर उपलब्ध हैं।

अंत में, हमने अंतिम सेक्शन में pagination कॉन्फ़िगरेशन पर चर्चा की।

CodeIgniter एक शक्तिशाली PHP का प्लेटफार्म है। चाहे आप बस शुरू ही कर रहे हों या आप अगले संस्करण में शुरू कर रहे हों, यह देखना मत भूलें कि हमारे पास आपके लिए क्या उपलब्ध है

नीचे दिए गए फ़ीड में आपके प्रश्नों और कमैंट्स में मुझे आपकी प्रतिक्रिया जानना अच्छा लगेगा!

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.