Διαδρομές CodeIgniter: Δρομολόγηση URL με Παράδειγμα
Τι είναι οι διαδρομές CodeIgniter;
Οι διαδρομές είναι υπεύθυνες για την απόκριση σε αιτήματα URL. Η δρομολόγηση αντιστοιχίζει τη διεύθυνση URL με τις προκαθορισμένες διαδρομές. Εάν δεν βρεθεί αντιστοίχιση διαδρομής τότε, το CodeIgniter ρίχνει μια σελίδα που δεν βρέθηκε εξαίρεση.
Οι διαδρομές στο CodeIgniter ορίζονται χρησιμοποιώντας τον παρακάτω τύπο:
example.com/Controller/Method/Parameter/
ΕΔΩ,
- Ελεγκτής -αντιστοιχίζεται στο όνομα του ελεγκτή που πρέπει να ανταποκρίνεται στη διεύθυνση URL.
- Μέθοδος – αντιστοιχίζεται στη μέθοδο στον ελεγκτή που πρέπει να ανταποκρίνεται στο αίτημα URI.
- Παράμετρος – αυτή η ενότητα είναι προαιρετική.
Παράδειγμα CodeIgniter Routes
Ας δούμε τώρα ένα πρακτικό URL Routing in CodeIgniter παράδειγμα.
Εξετάστε την ακόλουθη διεύθυνση URL http://localhost:3000/contacts/edit/1
ΕΔΩ,
- Το όνομα του ελεγκτή που ανταποκρίνεται στην παραπάνω διεύθυνση URL είναι "επαφές"
- Η μέθοδος στην κατηγορία Ελεγκτή Επαφές είναι "επεξεργασία"
- Η μέθοδος επεξεργασίας δέχεται μια παράμετρο. Στην περίπτωση του παραδείγματός μας, η τιμή "1" μεταβιβάζεται στη μέθοδο.
Ακολουθεί ένα σύντομο υπόβαθρο του τι σκοπεύουμε να κάνουμε:
- Δρομολόγηση – η δρομολόγηση είναι υπεύθυνη για την απόκριση σε αιτήματα URL. Το CodeIgniter Routing αντιστοιχίζει τη διεύθυνση URL με τις προκαθορισμένες διαδρομές. Εάν δεν βρεθεί αντιστοίχιση διαδρομής, τότε το CodeIgniter ρίχνει μια σελίδα που δεν βρέθηκε εξαίρεση.
- ελεγκτές – οι διαδρομές συνδέονται με ελεγκτές. Οι ελεγκτές κολλούν τα μοντέλα και τις όψεις μεταξύ τους. Το αίτημα για δεδομένα / επιχειρηματική λογική από το μοντέλο και επιστροφή των αποτελεσμάτων μέσω της παρουσίασης προβολών. Μόλις μια διεύθυνση URL αντιστοιχιστεί σε μια διαδρομή στο CodeIgniter, προωθείται σε μια δημόσια λειτουργία ελεγκτή που αλληλεπιδρά με την πηγή δεδομένων, την επιχειρηματική λογική και επιστρέφει την προβολή που εμφανίζει τα αποτελέσματα.
- Προβολές – οι απόψεις είναι υπεύθυνες για την παρουσίαση. Μια προβολή είναι συνήθως ένας συνδυασμός 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'] | Επικοινωνια | διαγράψετε |
Θα δημιουργήσουμε τις διαδρομές της εφαρμογής μας με βάση τον παραπάνω πίνακα. Ορίσαμε τις διευθύνσεις URL, τη διαδρομή του CodeIgniter και τις αντιστοιχίσαμε στον αντίστοιχο ελεγκτή και τα ονόματα μεθόδων.
Δημιουργία δρομολόγησης URL για την εφαρμογή
Ας δημιουργήσουμε το CodeIgniter URL Routing για το εκπαιδευτικό μας έργο
Ανοίξτε το 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'] = 'επαφές'; ορίζει μια διαδρομή επαφών που καλεί τη μέθοδο ευρετηρίου στον ελεγκτή Επαφών
- $route['create'] = 'επαφές/δημιουργία'; ορίζει μια δημιουργία διαδρομής που οδηγεί στον ελεγκτή Επαφών και καλεί τη μέθοδο δημιουργίας.
- $route['edit/:id'] = 'επαφές/επεξεργασία'; ορίζει μια επεξεργασία διαδρομής η οποία δέχεται μια παράμετρο αναγνωριστικού και οδηγεί στη μέθοδο επεξεργασίας του ελεγκτή Επαφών
- $route['update/:id'] = 'επαφές/ενημέρωση'; ορίζει μια ενημέρωση διαδρομής που δέχεται μια παράμετρο αναγνωριστικού και οδηγεί στη μέθοδο ενημέρωσης της κλάσης Επαφές.
- $route['delete/:id'] = 'επαφές/διαγραφή'; ορίζει μια διαγραφή διαδρομής που δέχεται μια παράμετρο αναγνωριστικού και δείχνει τη μέθοδο διαγραφής του ελεγκτή Επαφών.
Ο παρακάτω πίνακας δείχνει τις αντίστοιχες διευθύνσεις URL που προέρχονται από τις παραπάνω καθορισμένες διαδρομές
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 |
Τώρα που καλύψαμε τις διαδρομές, ας δημιουργήσουμε τον ελεγκτή Επαφών που θα ανταποκρίνεται στις ενέργειες που καθορίζονται στις διαδρομές.
Δημιουργήστε ένα νέο αρχείο Route στο CodeIgniter ως 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'); } }
ΕΔΩ,
- Οι επαφές κλάσης επεκτείνουν το CI_Controller {..} ορίζει την κλάση ελεγκτή μας και επεκτείνει την κλάση CI_Controller που συνοδεύεται από CodeIgniter.
- Οι μέθοδοι που ορίζονται παραπάνω αντιστοιχούν στις διαδρομές που ορίσαμε και αυτές με παραμέτρους όπως το delete δέχονται μια παράμετρο $id
- Παρατηρήστε ότι οι λειτουργίες φορτώνουν τρεις (3) προβολές. Η κεφαλίδα και το υποσέλιδο είναι κοινά για όλες τις μεθόδους. Η μεσαία προβολή είναι πολύ συγκεκριμένη για τη δράση, π.χ. η συνάρτηση διαγραφή για διαγραφή δημιουργεί μια προβολή για τη δημιουργία μιας συνάρτησης κ.λπ. Ένα άλλο σημαντικό πράγμα που πρέπει να θυμάστε είναι ότι οι προβολές φορτώνονται από τον υποκατάλογο επαφών.
Προβολές CodeIgniter
Πρέπει ακόμα να κάνουμε ένα ακόμη βήμα για να μπορέσουμε να δοκιμάσουμε τις διαδρομές CodeIgniter με παραμέτρους στο πρόγραμμα περιήγησης ιστού. Ας δημιουργήσουμε τις αντίστοιχες προβολές στις παραπάνω μεθόδους ελεγκτή.
Η παρακάτω εικόνα δείχνει πώς θα μοιάζει η εφαρμογή σας
Δημιουργήστε τα ακόλουθα αρχεία σε εφαρμογή/προβολές
header.php – this file will contain contacts app menu and the header footer.php – this files will contain the application footer.
Δημιουργήστε έναν νέο κατάλογο επαφών στην εφαρμογή/προβολές/επαφές προβολών
Δημιουργήστε τα ακόλουθα αρχεία μέσα
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 φορτώνει το Burma CSS από ένα δίκτυο 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/
μπορείτε να κάνετε κλικ στους συνδέσμους Νέα επαφή και Επεξεργασία επαφής και να δείτε τι συμβαίνει
Περίληψη
- Οι διαδρομές στο CI είναι υπεύθυνες για την απόκριση σε αιτήματα URL. Η δρομολόγηση αντιστοιχίζει τη διεύθυνση URL με τις προκαθορισμένες διαδρομές. Εάν δεν βρεθεί αντιστοίχιση διαδρομής CodeIgniter, τότε το CodeIgniter ρίχνει μια σελίδα που δεν βρέθηκε ως εξαίρεση.
- Η δρομολόγηση CI είναι υπεύθυνη για την απάντηση σε αιτήματα URL. Η δρομολόγηση αντιστοιχίζει τη διεύθυνση URL με τις προκαθορισμένες διαδρομές.
- Οι ελεγκτές κολλούν τα μοντέλα και τις όψεις μεταξύ τους. Το αίτημα για δεδομένα / επιχειρηματική λογική από το μοντέλο και επιστροφή των αποτελεσμάτων μέσω της παρουσίασης προβολών.
- Οι απόψεις είναι υπεύθυνες για την παρουσίαση. Μια προβολή είναι συνήθως ένας συνδυασμός HTML, CSS και JavaΓραφή.
- Σε αυτό το σεμινάριο, μάθαμε πώς να δημιουργούμε Routes στο CodeIgniter για ένα παράδειγμα εφαρμογής του πραγματικού κόσμου και καλύψαμε τα βασικά της δρομολόγησης που πρέπει να γνωρίζετε για να ξεκινήσετε την ανάπτυξη του CodeIgniter.