Codeمسارات الإشعال: URL التوجيه مع مثال

⚡ ملخص ذكي

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

  • 🧭 القاعدة الأساسية: يتطابق المسار مع URL إلى وحدة تحكم، وطريقة، ومعامل اختياري.
  • 📐 الصيغة: النمط هو Controller/Method/Parameter، المحدد في application/config/routes.php.
  • 🏠 المسار الافتراضي: يقوم المتحكم الافتراضي بتعيين الصفحة الرئيسية عندما لا يكون هناك URL تم إعطاء جزء من القطعة.
  • 🔢 المعلمات: يقوم مسار مثل edit/:id بتمرير قيمة المعرف إلى طريقة وحدة التحكم.
  • 🎛️ المراقب: كل مسار يرتبط بطريقة تقوم بتحميل طرق العرض المطابقة.
  • 🖼️ وجهات نظر مشتركة: يتم إعادة استخدام طرق عرض الرأس والتذييل، مع وجود طريقة عرض وسطى محددة لكل إجراء.
  • ❓ 404 التعامل: لا مثيل له URL يُثير استثناءً لعدم العثور على الصفحة، ويمكن تجاوزه باستخدام 404_override.

Codeمسارات الإشعال

ما هي 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 مع المعلمات في متصفح الويب. لنقم بإنشاء طرق العرض المطابقة لأساليب وحدة التحكم المذكورة أعلاه. توضح الصورة التالية شكل التطبيق:

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

يجب أن يكون هيكل ملفاتك كما يلي:

Codeبنية ملفات عرض Igniter

لنقم الآن بتحديث ملف 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/يمكنك النقر على رابطي "جهة اتصال جديدة" و"تعديل جهة اتصال" لمعرفة ما سيحدث.

الأسئلة الشائعة

قم بتحديد المسار باستخدام عنصر نائب مثل edit/:id، واقبل الوسيطة المطابقة في طريقة وحدة التحكم، على سبيل المثال edit($id). Codeيمرر المُشعل URL قم بتقسيم هذا النقاش.

Codeيُصدر Igniter استثناءً يفيد بعدم العثور على الصفحة، ويعرض صفحة الخطأ 404. يمكنك توجيه 404_override إلى وحدة التحكم الخاصة بك لعرض صفحة خطأ مخصصة بدلاً من ذلك.

تقوم الدالة site_url() بإنشاء عنوان URL كامل URL من عنوان URL الأساسي والمسار، بحيث تستمر الروابط في العمل إذا تم نقل الموقع أو تغيير المسار الأساسي. يحتاج إلى URL يجب تحميل المساعد أولاً.

نعم. انطلاقًا من اسم مورد مثل "جهات الاتصال"، يمكن للذكاء الاصطناعي إنشاء الفهرس، وإنشاء المسارات وتعديلها وتحديثها وحذفها باستخدام أساليب التحكم المطابقة، وفقًا لمعايير REST. تأكد من أسماء المعلمات.

يؤدي تحميل رأس وتذييل الصفحة بشكل منفصل إلى تجنب تكرار نفس التصميم في كل صفحة يتم عرضها. تقوم كل طريقة بتحميل رأس الصفحة المشترك، ثم عرض محتوى محدد، ثم تذييل الصفحة المشترك.

تلخيص هذه التدوينة بـ: