CodeIgniter-ruter: URL-ruting med eksempel
Hva er CodeIgniter-ruter?
Ruter er ansvarlige for å svare på URL-forespørsler. Ruting matcher URL-en til de forhåndsdefinerte rutene. Hvis ingen rutematch blir funnet, kaster CodeIgniter en side som ikke ble funnet et unntak.
Ruter i CodeIgniter er definert ved hjelp av formelen nedenfor:
example.com/Controller/Method/Parameter/
HER,
- Kontroller - er tilordnet kontrollernavnet som skal svare på URL-en.
- Metode – er tilordnet metoden i kontrolleren som skal svare på URI-forespørselen.
- Parameter – denne delen er valgfri.
CodeIgniter-ruter eksempel
La oss nå se på en praktisk URL-ruting inn CodeIgniter eksempel.
Tenk på følgende URL http://localhost:3000/contacts/edit/1
HER,
- Navnet på kontrolleren som svarer på URL-en ovenfor er "kontakter"
- Metoden i kontrollerklassen Kontakter er "edit"
- Redigeringsmetoden godtar en parameter. Når det gjelder vårt eksempel, overføres verdien "1" til metoden.
Her er en kort bakgrunn for hva vi planlegger å gjøre:
- Routing – ruting er ansvarlig for å svare på URL-forespørsler. CodeIgniter Routing matcher URL-en til de forhåndsdefinerte rutene. Hvis ikke rutematch blir funnet, kaster CodeIgniter et unntak fra siden ikke funnet.
- Controllers – ruter er knyttet til kontrollere. Kontrollere limer modellene og visningene sammen. Forespørselen om data / forretningslogikk fra modellen og returner resultatene via visningspresentasjonen. Når en URL har blitt matchet med en rute i CodeIgniter, videresendes den til en offentlig kontrollfunksjon som samhandler med datakilden, forretningslogikken og returnerer visningen som viser resultatene.
- Visninger – synspunkter er ansvarlige for presentasjon. En visning er vanligvis en kombinasjon av HTML, CSS og JavaScript. Dette er den delen som er ansvarlig for å vise nettsiden til brukeren. Vanligvis hentes dataene som vises vanligvis fra databasen eller andre tilgjengelige datakilder.
For å lære hvordan du implementerer rutere på et prosjekt i den virkelige verden, antar vi at vi lager et program for å administrere kontaktdetaljer. Tabellen nedenfor viser nettadressene som skal jobbes med.
S / N | URL | Rute | controller | Metode |
---|---|---|---|---|
1 | / | $route['default_controller'] | Velkommen | indeks |
2 | /kontakter | $route['kontakter'] | Kontakter | indeks |
3 | /kontakter/opprett | $route['skape'] | Kontakter | skape |
4 | /contacts/edit/id | $route['edit/:id'] | Kontakter | redigere |
5 | /contacts/update/id | $route['update/:id'] | Kontakter | Oppdater |
6 | /contacts/delete/id | $route['delete/:id'] | Kontakter | slette |
Vi vil lage rutene for applikasjonen vår basert på tabellen ovenfor. Vi har definert URL-ene, CodeIgniter-ruten, og kartlagt dem til de respektive kontrollerne og metodenavnene.
Opprette URL-ruting for applikasjonen
La oss lage CodeIgniter URL-ruting for opplæringsprosjektet vårt
Åpne application/config/routes.php
Endre rutene slik at de samsvarer med følgende
$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;
HER,
- $route['default_controller'] = 'velkommen'; definerer standardkontrolleren Velkommen.
- $route['contacts'] = 'kontakter'; definerer en kontaktrute som kaller indeksmetoden i kontaktkontrolleren
- $route['create'] = 'kontakter/opprett'; definerer en ruteoppretting som peker til kontaktkontrolleren og kaller opprettingsmetoden.
- $route['edit/:id'] = 'kontakter/rediger'; definerer en ruteredigering som godtar parameteren id og peker til redigeringsmetoden til kontaktkontrolleren
- $route['update/:id'] = 'kontakter/oppdatering'; definerer en ruteoppdatering som aksepterer parameteren id og peker på oppdateringsmetoden til klassen Kontakter.
- $route['delete/:id'] = 'kontakter/slett'; definerer en rutesletting som aksepterer parameteren id og peker på slettemetoden til kontaktkontrolleren.
Tabellen nedenfor viser de respektive URL-ene som er avledet fra de ovenfor definerte rutene
S / N | Rute | Tilsvarende URL |
---|---|---|
1 | $route['default_controller'] = 'velkommen'; | http://localhost:3000 |
2 | $route['contacts'] = 'kontakter'; | http://localhost:3000/contacts |
3 | $route['create'] = 'kontakter/opprett'; | http://localhost:3000/contacts/create |
4 | $route['edit/:id'] = 'kontakter/rediger'; | http://localhost:3000/contacts/edit/1 |
5 | $route['update/:id'] = 'kontakter/oppdatering'; | http://localhost:3000/contacts/update/1 |
6 | $route['delete/:id'] = 'kontakter/slett'; | http://localhost:3000/contacts/delete/1 |
Nå som vi har dekket rutene, la oss lage kontaktkontrolleren som vil svare på handlingene spesifisert i rutene.
Opprett en ny rutefil i CodeIgniter som Contacts.php i application/controllers/Contacts.php
Legg til følgende kode
<?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'); } }
HER,
- Klassekontakter utvider CI_Controller {..} definerer kontrollerklassen vår og utvider CI_Controller-klassen som følger med CodeIgniter.
- Metodene definert ovenfor tilsvarer rutene vi definerte, og de med parametere som slett godtar en parameter på $id
- Legg merke til at funksjonene laster inn tre (3) visninger. Topptekst og bunntekst er felles for alle metoder. Den midterste visningen er veldig spesifikk for handlingen, dvs. slett for slettefunksjon opprette en visning for å lage en funksjon osv. En annen viktig ting å huske er at visningene lastes fra underkatalogen for kontakter.
CodeIgniter-visninger
Vi må fortsatt ta ett steg til før vi kan teste våre CodeIgniter-ruter med parametere i nettleseren. La oss lage de tilsvarende visningene til kontrollmetodene ovenfor.
Følgende bilde viser hvordan applikasjonen din vil se ut
Opprett følgende filer i applikasjon/visninger
header.php – this file will contain contacts app menu and the header footer.php – this files will contain the application footer.
Opprett en ny katalog med kontakter i visningsprogram/visninger/kontakter
Lag følgende filer inne
index.php create.php edit.php
Filstrukturen din skal være som følger
La oss nå oppdatere 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>
HER,
- HTML-koden ovenfor laster Burma CSS fra et CDN-nettverk.
Følgende er koden for footer.php
</div> </div> </section> </body> </html>
La oss nå legge til koden for filene index.php, edit.php og create.php for kontakter.
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>
Du kan lagre alle endringene som er gjort.
Åpne følgende URL i nettleseren din http://localhost:3000/contacts/
du kan klikke på koblingene Ny kontakt og Rediger kontakt og se hva som skjer
Sammendrag
- Ruter i CI er ansvarlige for å svare på URL-forespørsler. Ruting matcher URL-en til de forhåndsdefinerte rutene. Hvis ingen CodeIgniter Route-match blir funnet, kaster CodeIgniter en side som ikke ble funnet et unntak.
- CI Routing er ansvarlig for å svare på URL-forespørsler. Ruting matcher URL-en til de forhåndsdefinerte rutene.
- Kontrollere limer modellene og visningene sammen. Forespørselen om data / forretningslogikk fra modellen og returner resultatene via visningspresentasjonen.
- Synspunkter er ansvarlig for presentasjon. En visning er vanligvis en kombinasjon av HTML, CSS og JavaManus.
- I denne opplæringen har vi lært hvordan du lager ruter i CodeIgniter for et eksempelprogram i den virkelige verden og dekket det grunnleggende om ruting som du trenger å vite for å komme i gang med å utvikle CodeIgniter.