Codeمسارات الإشعال: URL التوجيه مع مثال
⚡ ملخص ذكي
Codeأنبوب URL خرائط التوجيه أ URL إلى وحدة تحكم وطريقة، مع مُعامل اختياري. يتم تعريف المسارات في routes.php، لذا فهي نظيفة URL مثل contacts/edit/1 يقوم بتشغيل طريقة التحرير الخاصة بوحدة تحكم جهات الاتصال، والتي تقوم بتحميل طرق عرض الرأس والمحتوى والتذييل.

ما هي Codeمسارات الإشعال؟
تتولى المسارات مسؤولية الاستجابة لـ URL الطلبات. يتطابق التوجيه مع URL إلى المسارات المحددة مسبقًا. إذا لم يتم العثور على تطابق للمسار، Codeيقوم برنامج Igniter بإصدار استثناء "الصفحة غير موجودة".
الطرق في Codeيتم تعريف المُشغِّل باستخدام الصيغة التالية:
example.com/Controller/Method/Parameter/
هنا:
- يتم ربط وحدة التحكم باسم وحدة التحكم التي يجب أن تستجيب لـ URL.
- يتم ربط الطريقة بالطريقة الموجودة في وحدة التحكم والتي يجب أن تستجيب لطلب URI.
- المعلمة - هذا القسم اختياري.
Codeمثال على مسارات الإشعال
لنلق نظرة الآن على جانب عملي URL التوجيه في Codeأنبوب مثال. انظر إلى ما يلي URL: http://localhost:3000/contacts/edit/1
هنا:
- اسم وحدة التحكم التي تستجيب لما سبق URL هي "جهات الاتصال".
- الطريقة الموجودة في فئة وحدة التحكم Contacts هي "edit".
- تقبل دالة التعديل مُعاملًا. في مثالنا، يتم تمرير القيمة "1" إلى الدالة.
فيما يلي خلفية موجزة عما نخطط للقيام به:
- التوجيه – يستجيب التوجيه لـ URL طلبات. Codeيتطابق مسار المُشعل مع URL إلى المسارات المحددة مسبقًا. إذا لم يتم العثور على تطابق للمسار، Codeيقوم برنامج Igniter بإصدار استثناء "الصفحة غير موجودة".
- التحكم – ترتبط المسارات بوحدات التحكم. تربط وحدات التحكم النماذج والعروض معًا. فهي تطلب البيانات ومنطق الأعمال من النموذج وتعيد النتائج عبر عرضها. بمجرد URL بعد مطابقة المسار، يتم توجيهه إلى دالة عامة في وحدة التحكم تتفاعل مع مصدر البيانات ومنطق الأعمال وتعيد العرض.
- المشاهدات - الآراء هي المسؤولة عن العرض. عادةً ما يكون العرض عبارة عن مزيج من HTML وCSS و Javaسيناريوهذا الجزء مسؤول عن عرض صفحة الويب للمستخدم. عادةً ما يتم استرجاع البيانات المعروضة من قاعدة البيانات أو مصدر بيانات آخر.
لتعلم كيفية تطبيق المسارات في مشروع واقعي، نفترض أننا نقوم بإنشاء تطبيق لإدارة بيانات الاتصال. يوضح الجدول التالي URLسنعمل مع.
| S / N | URL | طريق | مراقب | الأسلوب |
|---|---|---|---|---|
| 1 | / | $route['default_controller'] | حياك الله | مؤشر |
| 2 | /جهات الاتصال | $طريق['جهات اتصال'] | معلومات الاتصال | مؤشر |
| 3 | /جهات الاتصال/إنشاء | مسار $['إنشاء'] | معلومات الاتصال | خلق |
| 4 | /جهات الاتصال/تحرير/معرف | $route['edit/:id'] | معلومات الاتصال | تحرير |
| 5 | /جهات الاتصال/تحديث/معرف | $route['update/:id'] | معلومات الاتصال | تحديث |
| 6 | /جهات الاتصال/حذف/معرف | $route['delete/:id'] | معلومات الاتصال | حذف |
سنقوم بإنشاء مسارات تطبيقنا بناءً على الجدول أعلاه. لقد حددنا URLق ، و Codeتم توجيه مسار Igniter، وتم ربطها بأسماء وحدة التحكم والطريقة المعنية.
خلق 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'] = 'مرحبًا'; يحدد وحدة التحكم الافتراضية مرحبا.
- $route['contacts'] = 'contacts'; يحدد مسار جهات الاتصال الذي يستدعي طريقة الفهرسة في وحدة تحكم جهات الاتصال.
- $route['create'] = 'contacts/create'; يحدد مسارًا باسم create يشير إلى وحدة تحكم جهات الاتصال ويستدعي طريقة create.
- $route['edit/:id'] = 'contacts/edit'; يحدد مسار التحرير الذي يقبل معلمة id ويشير إلى طريقة التحرير الخاصة بوحدة تحكم جهات الاتصال.
- $route['update/:id'] = 'contacts/update'; يحدد تحديث المسار الذي يقبل معلمة id ويشير إلى طريقة التحديث الخاصة بفئة جهات الاتصال.
- $route['delete/:id'] = 'contacts/delete'; يحدد مسار حذف يقبل معلمة id ويشير إلى طريقة الحذف الخاصة بوحدة تحكم جهات الاتصال.
يوضح الجدول التالي كلاً من URLs مشتقة من المسارات المحددة أعلاه:
| S / N | طريق | المقابلة URL |
|---|---|---|
| 1 | $route['default_controller'] = 'مرحبًا'; | http://localhost:3000 |
| 2 | $route['contacts'] = 'جهات الاتصال'; | 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 |
بعد أن استعرضنا المسارات، لننشئ وحدة تحكم جهات الاتصال التي ستستجيب للإجراءات المحددة في المسارات. أنشئ ملفًا جديدًا باسم Contacts.php في المسار application/controllers/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'); } }
هنا:
- يُعرّف الصنف `Contacts` الذي يرث من الصنف `CI_Controller` {…} صنف المتحكم الخاص بنا، وهو يرث من الصنف `CI_Controller` الذي يأتي معه. Codeأنبوب.
- تتوافق الطرق المحددة أعلاه مع المسارات التي حددناها، وتلك التي تحتوي على معلمات مثل الحذف تقبل معلمة $id.
- لاحظ أن الدوال تُحمّل ثلاث واجهات عرض. واجهة الرأس والتذييل مشتركة بين جميع الدوال. أما واجهة العرض الوسطى فهي خاصة بكل إجراء، أي "حذف" لدالة الحذف و"إنشاء" لدالة الإنشاء. ومن المهم أيضًا تذكر أن واجهات العرض تُحمّل من المجلد الفرعي "جهات الاتصال".
Codeآراء إغنايتر
ما زلنا بحاجة إلى خطوة أخرى قبل أن نتمكن من اختبار Codeمسارات Igniter مع المعلمات في متصفح الويب. لنقم بإنشاء طرق العرض المطابقة لأساليب وحدة التحكم المذكورة أعلاه. توضح الصورة التالية شكل التطبيق:
أنشئ الملفات التالية في مجلد application/views:
header.php – this file will contain the contacts app menu and the header footer.php – this file will contain the application footer
أنشئ مجلدًا جديدًا باسم contacts داخل مجلد application/views (application/views/contacts) وأنشئ الملفات التالية بداخله:
index.php create.php edit.php
يجب أن يكون هيكل ملفاتك كما يلي:
لنقم الآن بتحديث ملف 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 أعلاه بتحميل ملف CSS الخاص بـ Bulma من شبكة توصيل المحتوى (CDN).
فيما يلي رمز ملف 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/يمكنك النقر على رابطي "جهة اتصال جديدة" و"تعديل جهة اتصال" لمعرفة ما سيحدث.


