Percorsi CodeIgniter: routing URL con esempio
Cosa sono i percorsi CodeIgniter?
Le rotte sono responsabili della risposta alle richieste URL. Il routing abbina l'URL ai percorsi predefiniti. Se non viene trovata alcuna corrispondenza del percorso, CodeIgniter genera un'eccezione per la pagina non trovata.
I percorsi in CodeIgniter sono definiti utilizzando la formula seguente:
example.com/Controller/Method/Parameter/
QUI,
- Controller: è mappato sul nome del controller che dovrebbe rispondere all'URL.
- Metodo: viene mappato al metodo nel controller che dovrebbe rispondere alla richiesta URI.
- Parametro: questa sezione è facoltativa.
Esempio di percorsi CodeIgniter
Vediamo ora un pratico URL Routing in CodeIgniter esempio.
Considerare il seguente URL http://localhost:3000/contacts/edit/1
QUI,
- Il nome del titolare del trattamento che risponde all'URL sopra riportato è “contatti”
- Il metodo nella classe controller Contatti è "modifica"
- Il metodo di modifica accetta un parametro. Nel caso del nostro esempio, al metodo viene passato il valore “1”.
Ecco un breve background di ciò che intendiamo fare:
- efficiente – il routing è responsabile della risposta alle richieste URL. CodeIgniter Routing abbina l'URL ai percorsi predefiniti. Se non viene trovata alcuna corrispondenza del percorso, CodeIgniter genera un'eccezione di pagina non trovata.
- Controller – i percorsi sono collegati ai controllori. I controller uniscono insieme i modelli e le viste. La richiesta di dati/logica aziendale dal modello e la restituzione dei risultati tramite la presentazione delle visualizzazioni. Una volta che un URL è stato abbinato a una route in CodeIgniter, viene inoltrato a una funzione pubblica del controller che interagisce con l'origine dati, la logica aziendale e restituisce la vista che mostra i risultati.
- Visualizzazioni – Le visualizzazioni sono responsabili della presentazione. Una vista è solitamente una combinazione di HTML, CSS e JavaCopione. Questa è la parte responsabile della visualizzazione della pagina web all'utente. In genere, i dati visualizzati vengono solitamente recuperati dal database o da qualsiasi altra origine dati disponibile.
Per imparare come implementare i router in un progetto reale, supporremo di creare un'applicazione per la gestione dei dettagli dei contatti. La seguente tabella mostra gli URL con cui lavoreremo.
S / N | URL | strada | Controller | Metodo |
---|---|---|---|---|
1 | / | $ percorso['default_controller'] | Benvenuta | Index |
2 | /contatti | $percorso['contatti'] | Contattaci | Index |
3 | /contatti/crea | $percorso['crea'] | Contattaci | creare |
4 | /contatti/modifica/id | $percorso['modifica/:id'] | Contattaci | edit |
5 | /contatti/aggiornamento/id | $ percorso['aggiornamento/:id'] | Contattaci | update |
6 | /contatti/elimina/id | $ percorso['cancella/:id'] | Contattaci | delete |
Creeremo i percorsi della nostra applicazione in base alla tabella sopra. Abbiamo definito gli URL, il percorso CodeIgniter e li abbiamo mappati sui rispettivi nomi di controller e metodi.
Creazione del routing URL per l'applicazione
Creiamo il routing URL CodeIgniter per il nostro progetto tutorial
Apri application/config/routes.php
Modificare i percorsi in modo che corrispondano a quanto segue
$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;
QUI,
- $route['default_controller'] = 'benvenuto'; definisce il controller predefinito Benvenuto.
- $percorso['contatti'] = 'contatti'; definisce un percorso di contatti che chiama il metodo indice nel controller Contatti
- $route['create'] = 'contatti/crea'; definisce una route create che punta al controller Contatti e chiama il metodo create.
- $route['edit/:id'] = 'contatti/modifica'; definisce una modifica del percorso che accetta un parametro di id e punta al metodo di modifica del controller Contatti
- $route['update/:id'] = 'contatti/aggiornamento'; definisce un aggiornamento del percorso che accetta un parametro di id e punta al metodo di aggiornamento della classe Contatti.
- $route['delete/:id'] = 'contatti/delete'; definisce un percorso di eliminazione che accetta un parametro di id e punta al metodo di eliminazione del controller Contatti.
La tabella seguente mostra i rispettivi URL derivati dai percorsi definiti sopra
S / N | strada | URL corrispondente |
---|---|---|
1 | $route['default_controller'] = 'benvenuto'; | http://localhost:3000 |
2 | $percorso['contatti'] = 'contatti'; | http://localhost:3000/contacts |
3 | $route['create'] = 'contatti/crea'; | http://localhost:3000/contacts/create |
4 | $route['edit/:id'] = 'contatti/modifica'; | http://localhost:3000/contacts/edit/1 |
5 | $route['update/:id'] = 'contatti/aggiornamento'; | http://localhost:3000/contacts/update/1 |
6 | $route['delete/:id'] = 'contatti/delete'; | http://localhost:3000/contacts/delete/1 |
Ora che abbiamo trattato i percorsi, creiamo il controller Contatti che risponderà alle azioni specificate nei percorsi.
Crea un nuovo file Route in CodeIgniter come CONTACTS.php in application/controllers/Contacts.php
Aggiungere il seguente codice
<?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'); } }
QUI,
- I contatti della classe extends CI_Controller {..} definisce la nostra classe controller ed estende la classe CI_Controller fornita con CodeIgniter.
- I metodi definiti sopra corrispondono alle rotte che abbiamo definito e quelli con parametri come delete accettano un parametro $id
- Notare che le funzioni caricano tre (3) visualizzazioni. L'intestazione e il piè di pagina sono comuni a tutti i metodi. La vista centrale è molto specifica per l'azione, ad esempio elimina per la funzione di eliminazione crea una vista per creare una funzione, ecc. Un'altra cosa importante da ricordare è che le viste vengono caricate dalla sottodirectory dei contatti.
Viste CodeIgniter
Dobbiamo ancora fare un ulteriore passo prima di poter testare le nostre rotte CodeIgniter con parametri nel browser web. Creiamo le visualizzazioni corrispondenti ai metodi del controller di cui sopra.
L'immagine seguente mostra come apparirà la tua applicazione
Creare i seguenti file in application/views
header.php – this file will contain contacts app menu and the header footer.php – this files will contain the application footer.
Crea una nuova directory di contatti in views application/views/contacts
Crea i seguenti file all'interno
index.php create.php edit.php
La struttura del file dovrebbe essere la seguente
Aggiorniamo ora 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>
QUI,
- Il codice HTML sopra carica Burma CSS da una rete CDN.
Di seguito è riportato il codice per footer.php
</div> </div> </section> </body> </html>
Aggiungiamo ora il codice per i file index.php, edit.php e create.php per i contatti.
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>
È possibile salvare tutte le modifiche apportate.
Apri il seguente URL nel tuo browser web http://localhost:3000/contacts/
puoi fare clic sui collegamenti Nuovo contatto e Modifica contatto e vedere cosa succede
Sommario
- Le route in CI sono responsabili della risposta alle richieste URL. Il routing abbina l'URL ai percorsi predefiniti. Se non viene trovata alcuna corrispondenza della route CodeIgniter, CodeIgniter genera un'eccezione per la pagina non trovata.
- CI Routing è responsabile della risposta alle richieste URL. Il routing abbina l'URL ai percorsi predefiniti.
- I controller uniscono insieme i modelli e le viste. La richiesta di dati/logica aziendale dal modello e la restituzione dei risultati tramite la presentazione delle visualizzazioni.
- Le visualizzazioni sono responsabili della presentazione. Una vista è solitamente una combinazione di HTML, CSS e JavaScript.
- In questo tutorial, abbiamo imparato come creare percorsi in CodeIgniter per un'applicazione di esempio reale e trattato le nozioni di base del routing che devi conoscere per iniziare a sviluppare CodeIgniter.