Codeइग्नाइटर रूट्स: URL उदाहरण सहित रूटिंग

⚡ स्मार्ट सारांश

Codeआग लगनेवाला URL रूटिंग मैप्स URL एक कंट्रोलर और मेथड को, एक वैकल्पिक पैरामीटर के साथ। रूट्स को routes.php में परिभाषित किया गया है, इसलिए एक साफ कोड। URL जैसे कि contacts/edit/1, Contacts कंट्रोलर के एडिट मेथड को चलाता है, जो हेडर, कंटेंट और फुटर व्यू को लोड करता है।

  • 🧭 मूल नियम: एक मार्ग मेल खाता है URL नियंत्रक, विधि और वैकल्पिक पैरामीटर के लिए।
  • 📐 फॉर्मूला: इसका पैटर्न Controller/Method/Parameter है, जिसे application/config/routes.php में परिभाषित किया गया है।
  • 🏠 डिफ़ॉल्ट रूट: default_controller होम पेज सेट करता है जब कोई URL खंड दिया गया है।
  • 🔢 पैरामीटर: edit/:id जैसा एक रूट id वैल्यू को कंट्रोलर मेथड में पास करता है।
  • नियंत्रक: प्रत्येक रूट एक ऐसे मेथड से मैप होता है जो मैचिंग व्यूज को लोड करता है।
  • 🖼️ साझा विचार: हेडर और फुटर व्यू का पुन: उपयोग किया जाता है, जिसमें प्रत्येक क्रिया के लिए एक विशिष्ट मध्य व्यू होता है।
  • 404 हैंडलिंग: एक अद्वितीय URL यह पेज-नॉट-फाउंड अपवाद उत्पन्न करता है, जिसे 404_ओवरराइड के साथ ओवरराइड किया जा सकता है।

Codeइग्नाइटर रूट्स

क्या हैं Codeइग्नाइटर रूट्स?

मार्गों की जिम्मेदारी है कि वे प्रतिक्रिया दें URL अनुरोध। रूटिंग मेल खाती है URL पूर्वनिर्धारित मार्गों के लिए। यदि कोई मार्ग मेल नहीं खाता है, CodeIgniter एक पेज-नॉट-फाउंड अपवाद उत्पन्न करता है।

मार्गों में Codeइग्नाइटर को नीचे दिए गए सूत्र का उपयोग करके परिभाषित किया जाता है:

example.com/Controller/Method/Parameter/

यहाँ:

  • कंट्रोलर को उस कंट्रोलर नाम से मैप किया गया है जो प्रतिक्रिया देगा। URL.
  • यह मेथड कंट्रोलर में उस मेथड से मैप किया गया है जो URI अनुरोध का जवाब देगा।
  • पैरामीटर - यह अनुभाग वैकल्पिक है.

Codeइग्नाइटर रूट्स उदाहरण

आइए अब एक व्यावहारिक उदाहरण देखें। URL रूटिंग में Codeआग लगनेवाला उदाहरण के लिए, निम्नलिखित पर विचार करें। URL: http://localhost:3000/contacts/edit/1

यहाँ:

  • उपरोक्त का जवाब देने वाले नियंत्रक का नाम URL इसका अर्थ है "संपर्क"।
  • कंट्रोलर क्लास कॉन्टैक्ट्स में मौजूद मेथड का नाम “एडिट” है।
  • एडिट विधि एक पैरामीटर स्वीकार करती है। हमारे उदाहरण में, विधि को "1" मान पास किया जाता है।

हम जो करने की योजना बना रहे हैं उसकी संक्षिप्त पृष्ठभूमि इस प्रकार है:

  • मार्ग – रूटिंग प्रतिक्रिया देती है URL अनुरोधों. Codeइग्नाइटर रूटिंग मेल खाती है URL पूर्वनिर्धारित मार्गों के लिए। यदि कोई मार्ग मेल नहीं खाता है, CodeIgniter एक पेज-नॉट-फाउंड अपवाद उत्पन्न करता है।
  • नियंत्रक – रूट कंट्रोलर से जुड़े होते हैं। कंट्रोलर मॉडल और व्यू को आपस में जोड़ते हैं। वे मॉडल से डेटा और व्यावसायिक तर्क का अनुरोध करते हैं और व्यू के प्रेजेंटेशन के माध्यम से परिणाम लौटाते हैं। एक बार जब URL जब किसी डेटा को किसी रूट से मिला दिया जाता है, तो उसे एक कंट्रोलर पब्लिक फंक्शन में भेज दिया जाता है जो डेटा स्रोत और व्यावसायिक तर्क के साथ इंटरैक्ट करता है और व्यू लौटाता है।
  • दृश्य - दृश्य प्रस्तुति के लिए जिम्मेदार हैं। एक दृश्य आम तौर पर HTML, CSS और का संयोजन होता है Javaलिपियह भाग उपयोगकर्ता को वेब पेज प्रदर्शित करने के लिए जिम्मेदार है। आमतौर पर, प्रदर्शित डेटा डेटाबेस या किसी अन्य डेटा स्रोत से प्राप्त किया जाता है।

किसी वास्तविक परियोजना में रूट को लागू करने का तरीका सीखने के लिए, हम मान लेते हैं कि हम संपर्क विवरण प्रबंधित करने के लिए एक एप्लिकेशन बना रहे हैं। निम्नलिखित तालिका दर्शाती है कि... URLहम जिनके साथ काम करेंगे।

एस / एन URL मार्ग नियंत्रक विधि
1 / $ मार्ग['डिफ़ॉल्ट_कंट्रोलर'] स्वागत अनुक्रमणिका
2 /संपर्क $ मार्ग['संपर्क'] संपर्क अनुक्रमणिका
3 /संपर्क/बनाएँ $ मार्ग['बनाएँ'] संपर्क बनाना
4 /संपर्क/संपादन/आईडी $ मार्ग['संपादन/:id'] संपर्क संपादित
5 /संपर्क/अद्यतन/आईडी $ मार्ग['अपडेट/:id'] संपर्क अद्यतन
6 /संपर्क/हटाएँ/आईडी $ मार्ग['हटाएँ/:id'] संपर्क हटाना

हम ऊपर दी गई तालिका के आधार पर अपने एप्लिकेशन के रूट बनाएंगे। हमने परिभाषित किया है URLs, द Codeइग्नाइटर रूट का उपयोग किया और उन्हें संबंधित कंट्रोलर और मेथड नामों से मैप किया।

बनाना URL एप्लिकेशन के लिए रूटिंग

आइए मिलकर सृजन करें Codeआग लगनेवाला URL हमारे ट्यूटोरियल प्रोजेक्ट के लिए रूटिंग। application/config/routes.php फ़ाइल खोलें और रूट्स को निम्न अनुसार संशोधित करें:

$route['default_controller'] = 'welcome';
$route['contacts'] = 'contacts';
$route['create'] = 'contacts/create';
$route['edit/:id'] = 'contacts/edit';
$route['update/:id'] = 'contacts/update';
$route['delete/:id'] = 'contacts/delete';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;

यहाँ:

  • $route['default_controller'] = 'welcome'; डिफ़ॉल्ट नियंत्रक Welcome को परिभाषित करता है।
  • $route['contacts'] = 'contacts'; एक कॉन्टैक्ट्स रूट को परिभाषित करता है जो कॉन्टैक्ट्स कंट्रोलर में इंडेक्स मेथड को कॉल करता है।
  • $route['create'] = 'contacts/create'; एक रूट 'create' को परिभाषित करता है जो Contacts कंट्रोलर की ओर इंगित करता है और 'create' विधि को कॉल करता है।
  • $route['edit/:id'] = 'contacts/edit'; एक रूट एडिट को परिभाषित करता है जो आईडी का एक पैरामीटर स्वीकार करता है और कॉन्टैक्ट्स कंट्रोलर के एडिट मेथड को इंगित करता है।
  • $route['update/:id'] = 'contacts/update'; एक रूट अपडेट को परिभाषित करता है जो आईडी का एक पैरामीटर स्वीकार करता है और कॉन्टैक्ट्स क्लास के अपडेट मेथड को इंगित करता है।
  • $route['delete/:id'] = 'contacts/delete'; एक रूट डिलीट को परिभाषित करता है जो आईडी का एक पैरामीटर स्वीकार करता है और कॉन्टैक्ट्स कंट्रोलर के डिलीट मेथड को इंगित करता है।

निम्नलिखित तालिका संबंधित मान दर्शाती है। URLऊपर परिभाषित मार्गों से व्युत्पन्न:

एस / एन मार्ग इसी URL
1 $route['default_controller'] = 'स्वागत है'; http://localhost:3000
2 $route['संपर्क'] = 'संपर्क'; http://localhost:3000/contacts
3 $route['create'] = 'संपर्क/बनाएँ'; http://localhost:3000/contacts/create
4 $route['edit/:id'] = 'संपर्क/संपादन'; http://localhost:3000/contacts/edit/1
5 $route['update/:id'] = 'संपर्क/अपडेट'; http://localhost:3000/contacts/update/1
6 $route['delete/:id'] = 'संपर्क/हटाएं'; http://localhost:3000/contacts/delete/1

अब जब हमने राउट्स को समझ लिया है, तो आइए कॉन्टैक्ट्स कंट्रोलर बनाते हैं जो राउट्स में निर्दिष्ट एक्शन पर प्रतिक्रिया देगा। application/controllers/Contacts.php में Contacts.php नाम की एक नई फ़ाइल बनाएं और उसमें निम्नलिखित कोड जोड़ें:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Contacts extends CI_Controller {

public function __construct() {
parent::__construct();
$this->load->helper('url');
}

public function index() {
$this->load->view('header');
$this->load->view('contacts/index');
$this->load->view('footer');
}

public function create() {
$this->load->view('header');
$this->load->view('contacts/create');
$this->load->view('footer');
}

public function edit($id) {
$this->load->view('header');
$this->load->view('contacts/edit');
$this->load->view('footer');
}

public function update($id) {
$this->load->view('header');
$this->load->view('contacts/update');
$this->load->view('footer');
}

public function delete($id) {
$this->load->view('header');
$this->load->view('contacts/delete');
$this->load->view('footer');
}
}

यहाँ:

  • class Contacts extends CI_Controller {…} हमारी कंट्रोलर क्लास को परिभाषित करता है और CI_Controller क्लास को विस्तारित करता है जो इसके साथ आती है। Codeइग्नाइटर।
  • ऊपर परिभाषित विधियाँ हमारे द्वारा परिभाषित मार्गों के अनुरूप हैं, और डिलीट जैसे पैरामीटर वाली विधियाँ $id का पैरामीटर स्वीकार करती हैं।
  • ध्यान दें कि फ़ंक्शन तीन व्यू लोड करते हैं। हेडर और फ़ूटर सभी विधियों के लिए समान हैं। बीच वाला व्यू क्रिया के लिए विशिष्ट है, जैसे डिलीट फ़ंक्शन के लिए डिलीट और क्रिएट फ़ंक्शन के लिए क्रिएट। एक और महत्वपूर्ण बात याद रखने वाली यह है कि व्यू कॉन्टैक्ट्स सबडायरेक्ट्री से लोड होते हैं।

Codeइग्नाइटर व्यूज़

हमें अपने परीक्षण से पहले अभी एक और कदम उठाना बाकी है। Codeवेब ब्राउज़र में पैरामीटर के साथ इग्नाइटर रूटिंग। आइए ऊपर दिए गए कंट्रोलर मेथड के अनुसार व्यू बनाते हैं। नीचे दी गई छवि दर्शाती है कि एप्लिकेशन कैसा दिखेगा:

Codeइग्नाइटर संपर्क एप्लिकेशन पूर्वावलोकन

application/views फ़ोल्डर में निम्नलिखित फ़ाइलें बनाएँ:

header.php – this file will contain the contacts app menu and the header
footer.php – this file will contain the application footer

application/views फ़ोल्डर के अंदर एक नई डायरेक्टरी (application/views/contacts) बनाएं और उसके अंदर निम्नलिखित फ़ाइलें बनाएं:

index.php
create.php
edit.php

आपकी फ़ाइल संरचना इस प्रकार होनी चाहिए:

Codeइग्नाइटर व्यूज़ फ़ाइल संरचना

अब आइए header.php फ़ाइल को अपडेट करें:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>CodeIgniter Routes</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.2/css/bulma.min.css">
<script defer src="https://use.fontawesome.com/releases/v5.3.1/js/all.js"></script>
</head>
<body>
<section class="section">
<div class="container">
<h1 class="title">CI Contacts v1</h1>
<h2 class="subtitle">CodeIgniter contacts management app</h2>
<div class="columns">
<div class="column is-one-quarter">
<aside class="menu">
<p class="menu-label">
General
</p>
<ul class="menu-list">
<li><a class="is-active" href="#">Dashboard</a></li>
<li><a href="<?=site_url('contacts/create')?>">New Contact</a></li>
<li><a href="<?=site_url('contacts/edit/1')?>">Edit Contacts</a></li>
</ul>
<p class="menu-label">
Settings
</p>
<ul class="menu-list">
<li><a href="#">SMS</a></li>
<li><a href="#">Email</a></li>
</ul>
</aside>
</div>

यहाँ:

  • ऊपर दिया गया HTML कोड CDN से Bulma CSS लोड करता है।

नीचे footer.php फ़ाइल का कोड दिया गया है:

</div>
</div>
</section>
</body>
</html>

अब आइए संपर्कों के लिए index.php, edit.php और create.php फ़ाइलों का कोड जोड़ते हैं:

index.php
<div class="column">Index content goes here...</div>
edit.php
<div class="column">Edit content goes here...</div>
create.php
<div class="column">Create content goes here...</div>

आप किए गए सभी बदलावों को सहेज सकते हैं। निम्नलिखित फ़ाइल खोलें। URL अपने वेब ब्राउज़र में: http://localhost:3000/contacts/आप न्यू कॉन्टैक्ट और एडिट कॉन्टैक्ट लिंक पर क्लिक करके देख सकते हैं कि क्या होता है।

अक्सर पूछे जाने वाले प्रश्न

रूट को एडिट/:आईडी जैसे प्लेसहोल्डर के साथ परिभाषित करें, और कंट्रोलर विधि में मिलान तर्क को स्वीकार करें, उदाहरण के लिए एडिट($आईडी)। Codeइग्नाइटर पास करता है URL उस तर्क में एक खंड जोड़ें।

CodeIgniter एक पेज-नॉट-फाउंड एक्सेप्शन देता है और 404 पेज दिखाता है। आप 404_override को अपने कंट्रोलर पर पॉइंट करके एक कस्टम एरर पेज डिस्प्ले कर सकते हैं।

site_url() एक पूर्ण URL बनाता है URL आपके base_url और रूट से, ताकि साइट के स्थान बदलने या बेस पाथ में परिवर्तन होने पर भी लिंक काम करते रहें। इसके लिए इसकी आवश्यकता है। URL हेल्पर को पहले लोड किया जाना है।

जी हां। कॉन्टैक्ट्स जैसे रिसोर्स नाम से, AI इंडेक्स तैयार कर सकता है और REST नियमों का पालन करते हुए मैचिंग कंट्रोलर मेथड्स के साथ रूट्स बना, एडिट, अपडेट और डिलीट कर सकता है। पैरामीटर नामों की पुष्टि करें।

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

इस पोस्ट को संक्षेप में इस प्रकार लिखें: