CodeΔιαδρομές ανάφλεξης: URL Δρομολόγηση με παράδειγμα

⚡ Έξυπνη Σύνοψη

CodeIgniter URL Χάρτες δρομολόγησης a URL σε έναν ελεγκτή και μια μέθοδο, με μια προαιρετική παράμετρο. Οι διαδρομές ορίζονται στο routes.php, επομένως ένα καθαρό URL Όπως και η εντολή contacts/edit/1, εκτελεί τη μέθοδο επεξεργασίας του ελεγκτή Επαφών, η οποία φορτώνει προβολές κεφαλίδας, περιεχομένου και υποσέλιδου.

  • 🧭 Βασικός κανόνας: Μια διαδρομή ταιριάζει με μια URL σε έναν ελεγκτή, μια μέθοδο και μια προαιρετική παράμετρο.
  • 📐 Φόρμουλα: Το μοτίβο είναι Controller/Method/Parameter, που ορίζεται στο application/config/routes.php.
  • 🏠 Προεπιλεγμένη διαδρομή: default_controller ορίζει την αρχική σελίδα όταν δεν υπάρχει URL δίνεται ένα τμήμα.
  • 🔢 παράμετροι: Μια διαδρομή όπως η edit/:id μεταβιβάζει την τιμή id στη μέθοδο ελεγκτή.
  • Ελεγκτής: Κάθε διαδρομή αντιστοιχεί σε μια μέθοδο που φορτώνει τις αντίστοιχες προβολές.
  • Κοινές προβολές: Οι προβολές κεφαλίδας και υποσέλιδου επαναχρησιμοποιούνται, με μια συγκεκριμένη μεσαία προβολή ανά ενέργεια.
  • 404 Χειρισμός: Ένα απαράμιλλο URL εμφανίζει μια εξαίρεση "η σελίδα δεν βρέθηκε", η οποία μπορεί να παρακαμφθεί με την εντολή 404_override.

CodeΔιαδρομές ανάφλεξης

Τι είναι CodeΔιαδρομές ανάφλεξης;

Οι διαδρομές είναι υπεύθυνες για την ανταπόκριση σε URL αιτήματα. Η δρομολόγηση ταιριάζει με το URL στις προκαθορισμένες διαδρομές. Εάν δεν βρεθεί καμία αντίστοιχη διαδρομή, CodeΤο Igniter εμφανίζει μια εξαίρεση "η σελίδα δεν βρέθηκε".

Διαδρομές σε CodeΟ αναφλεκτήρας ορίζεται χρησιμοποιώντας τον παρακάτω τύπο:

example.com/Controller/Method/Parameter/

Εδώ:

  • Ο ελεγκτής αντιστοιχίζεται στο όνομα του ελεγκτή που θα πρέπει να ανταποκρίνεται στο URL.
  • Η μέθοδος αντιστοιχίζεται στη μέθοδο στον ελεγκτή που θα πρέπει να ανταποκριθεί στο αίτημα URI.
  • Παράμετρος – αυτή η ενότητα είναι προαιρετική.

CodeΠαράδειγμα Διαδρομών Έναυσης

Ας δούμε τώρα μια πρακτική URL δρομολόγηση σε CodeIgniter παράδειγμα. Σκεφτείτε τα εξής 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 /επαφές $route['επαφές'] Επικοινωνια ευρετήριο
3 /επαφές/δημιουργία $route['create'] Επικοινωνια δημιουργία
4 /contacts/edit/id $route['edit/:id'] Επικοινωνια Επεξεργασία
5 /επαφές/ενημέρωση/αναγνωριστικό $route['update/:id'] Επικοινωνια ενημέρωση
6 /επαφές/διαγραφή/αναγνωριστικό $route['delete/:id'] Επικοινωνια διαγράψετε

Θα δημιουργήσουμε τις διαδρομές της εφαρμογής μας με βάση τον παραπάνω πίνακα. Έχουμε ορίσει το URLs, το Codeδιαδρομή του Igniter και τις αντιστοίχισε στα αντίστοιχα ονόματα ελεγκτή και μεθόδου.

δημιουργία URL Δρομολόγηση για την εφαρμογή

Ας δημιουργήσουμε CodeIgniter 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 και δείχνει στη μέθοδο ενημέρωσης της κλάσης Contacts.
  • $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Αναπτήρ.
  • Οι μέθοδοι που ορίστηκαν παραπάνω αντιστοιχούν στις διαδρομές που ορίσαμε και εκείνες με παραμέτρους όπως η delete δέχονται μια παράμετρο $id.
  • Παρατηρήστε ότι οι συναρτήσεις φορτώνουν τρεις προβολές. Η κεφαλίδα και το υποσέλιδο είναι κοινά για όλες τις μεθόδους. Η μεσαία προβολή είναι συγκεκριμένη για την ενέργεια, δηλαδή διαγραφή για τη συνάρτηση διαγραφής και δημιουργία για τη συνάρτηση δημιουργίας. Ένα άλλο σημαντικό πράγμα που πρέπει να θυμάστε είναι ότι οι προβολές φορτώνονται από τον υποκατάλογο επαφών.

CodeΠροβολές Igniter

Χρειαζόμαστε ακόμα ένα βήμα πριν μπορέσουμε να δοκιμάσουμε το CodeΔιαδρομές του Igniter με παραμέτρους στο πρόγραμμα περιήγησης ιστού. Ας δημιουργήσουμε τις προβολές που αντιστοιχούν στις παραπάνω μεθόδους ελεγκτή. Η ακόλουθη εικόνα δείχνει πώς θα μοιάζει η εφαρμογή:

CodeΠροεπισκόπηση εφαρμογής επαφών ανάφλεξης

Δημιουργήστε τα ακόλουθα αρχεία σε εφαρμογή/προβολές:

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Δομή αρχείου προβολών 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 από το base_url και τη διαδρομή, έτσι ώστε οι σύνδεσμοι να συνεχίσουν να λειτουργούν αν ο ιστότοπος μετακινηθεί ή αλλάξει η βασική διαδρομή. Χρειάζεται το URL ο βοηθός πρέπει να φορτωθεί πρώτος.

Ναι. Από ένα όνομα πόρου όπως οι επαφές, η Τεχνητή Νοημοσύνη μπορεί να δημιουργήσει το ευρετήριο, να δημιουργήσει, να επεξεργαστεί, να ενημερώσει και να διαγράψει διαδρομές με αντίστοιχες μεθόδους ελεγκτή, ακολουθώντας τις συμβάσεις REST. Επιβεβαιώστε τα ονόματα των παραμέτρων.

Η ξεχωριστή φόρτωση της κεφαλίδας και του υποσέλιδου αποφεύγει την επανάληψη της ίδιας διάταξης σε κάθε προβολή σελίδας. Κάθε μέθοδος φορτώνει την κοινόχρηστη κεφαλίδα, μια συγκεκριμένη προβολή περιεχομένου και, στη συνέχεια, το κοινόχρηστο υποσέλιδο.

Συνοψίστε αυτήν την ανάρτηση με: