CodeIgniter-rutter: URL-routing med exempel
Vad är CodeIgniter-rutter?
Rutter ansvarar för att svara på URL-förfrågningar. Routing matchar URL:en med de fördefinierade rutterna. Om ingen ruttmatchning hittas, skickar CodeIgniter en sida som inte hittas ett undantag.
Rutter i CodeIgniter definieras med följande formel:
example.com/Controller/Method/Parameter/
HÄR,
- Controller - är mappad till controllerns namn som ska svara på URL:en.
- Metod – mappas till metoden i styrenheten som ska svara på URI-begäran.
- Parameter – detta avsnitt är valfritt.
CodeIgniter Routes Exempel
Låt oss nu titta på en praktisk URL-dirigering CodeIgniter exempel.
Tänk på följande URL http://localhost:3000/contacts/edit/1
HÄR,
- Namnet på den registeransvarige som svarar på ovanstående URL är "kontakter"
- Metoden i controllerklassen Contacts är "edit"
- Redigeringsmetoden accepterar en parameter. I vårt exempel skickas värdet "1" till metoden.
Här är en kort bakgrund av vad vi planerar att göra:
- Rutthantering – routing ansvarar för att svara på URL-förfrågningar. CodeIgniter Routing matchar URL:en till de fördefinierade rutterna. Om ingen ruttmatchning hittas så kastar CodeIgniter ett undantag för sida ej hittad.
- controllers – rutter är kopplade till styrenheter. Styrenheter limmar ihop modellerna och vyerna. Begäran om data / affärslogik från modellen och returnera resultaten via åsiktspresentationen. När en URL har matchats till en rutt i CodeIgniter vidarebefordras den till en offentlig kontrollfunktion som interagerar med datakällan, affärslogik och returnerar vyn som visar resultaten.
- Visningar – synpunkter ansvarar för presentationen. En vy är vanligtvis en kombination av HTML, CSS och JavaScript. Detta är den del som är ansvarig för att visa webbsidan för användaren. Vanligtvis hämtas data som visas vanligtvis från databasen eller andra tillgängliga datakällor.
För att lära oss hur man implementerar routrar i ett verkligt projekt, kommer vi att anta att vi skapar en applikation för att hantera kontaktuppgifter. Följande tabell visar webbadresserna som kommer att arbeta med.
S / N | URL | Rutt | Regulator | Metod |
---|---|---|---|---|
1 | / | $route['default_controller'] | Välkommen | index |
2 | /kontakter | $route['kontakter'] | Kontakt | index |
3 | /kontakter/skapa | $route['skapa'] | Kontakt | skapa |
4 | /contacts/edit/id | $route['edit/:id'] | Kontakt | redigera |
5 | /contacts/update/id | $route['update/:id'] | Kontakt | uppdatering |
6 | /contacts/delete/id | $route['delete/:id'] | Kontakt | radera |
Vi kommer att skapa rutter för vår applikation baserat på tabellen ovan. Vi har definierat URL:erna, CodeIgniter-rutten, och mappat dem till respektive styrenhet och metodnamn.
Skapa URL-routing för applikationen
Låt oss skapa CodeIgniter URL Routing för vårt handledningsprojekt
Öppna application/config/routes.php
Ändra rutterna så att de matchar följande
$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;
HÄR,
- $route['default_controller'] = 'välkommen'; definierar standardkontrollern Välkommen.
- $route['contacts'] = 'kontakter'; definierar en kontaktrutt som anropar indexmetoden i kontaktkontrollern
- $route['create'] = 'kontakter/skapa'; definierar en rutt skapa som pekar på kontaktkontrollern och anropar metoden skapa.
- $route['edit/:id'] = 'kontakter/redigera'; definierar en ruttredigering som accepterar parametern id och pekar på redigeringsmetoden för kontaktkontroller
- $route['update/:id'] = 'kontakter/uppdatering'; definierar en ruttuppdatering som accepterar parametern id och pekar på uppdateringsmetoden för klassen Contacts.
- $route['delete/:id'] = 'kontakter/radera'; definierar en ruttradering som accepterar parametern id och pekar på raderingsmetoden för kontaktkontrollern.
Följande tabell visar respektive webbadresser som härrör från ovan definierade rutter
S / N | Rutt | Motsvarande URL |
---|---|---|
1 | $route['default_controller'] = 'välkommen'; | http://localhost:3000 |
2 | $route['contacts'] = 'kontakter'; | http://localhost:3000/contacts |
3 | $route['create'] = 'kontakter/skapa'; | http://localhost:3000/contacts/create |
4 | $route['edit/:id'] = 'kontakter/redigera'; | http://localhost:3000/contacts/edit/1 |
5 | $route['update/:id'] = 'kontakter/uppdatering'; | http://localhost:3000/contacts/update/1 |
6 | $route['delete/:id'] = 'kontakter/radera'; | http://localhost:3000/contacts/delete/1 |
Nu när vi har täckt rutterna, låt oss skapa kontaktkontrollanten som kommer att svara på de åtgärder som anges i rutterna.
Skapa en ny ruttfil i CodeIgniter som Contacts.php i application/controllers/Contacts.php
Lägg till följande kod
<?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'); } }
HÄR,
- Klasskontakter utökar CI_Controller {..} definierar vår kontrollklass och utökar CI_Controller-klassen som kommer med CodeIgniter.
- Metoderna som definierats ovan motsvarar de rutter vi definierade och de med parametrar som delete accepterar parametern $id
- Lägg märke till att funktionerna laddar tre (3) vyer. Sidhuvudet och sidfoten är gemensamma för alla metoder. Mittvyn är väldigt specifik för åtgärden, dvs radera för raderingsfunktion skapa en vy för att skapa en funktion etc. En annan viktig sak att komma ihåg är att vyerna laddas från underkatalogen för kontakter.
CodeIgniter-vyer
Vi behöver fortfarande ta ett steg till innan vi kan testa våra CodeIgniter-rutter med parametrar i webbläsaren. Låt oss skapa motsvarande vyer till kontrollermetoderna ovan.
Följande bild visar hur din applikation kommer att se ut
Skapa följande filer i applikation/vyer
header.php – this file will contain contacts app menu and the header footer.php – this files will contain the application footer.
Skapa en ny katalog med kontakter i visningsprogram/vyer/kontakter
Skapa följande filer inuti
index.php create.php edit.php
Din filstruktur bör vara följande
Låt oss nu uppdatera 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>
HÄR,
- Ovanstående HTML-kod laddar Burma CSS från ett CDN-nätverk.
Följande är koden för footer.php
</div> </div> </section> </body> </html>
Låt oss nu lägga till koden för filerna index.php, edit.php och create.php för 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 spara alla ändringar som har gjorts.
Öppna följande URL i din webbläsare http://localhost:3000/contacts/
du kan klicka på länkarna Ny kontakt och Redigera kontakt och se vad som händer
Sammanfattning
- Rutter i CI är ansvariga för att svara på URL-förfrågningar. Routing matchar URL:en med de fördefinierade rutterna. Om ingen CodeIgniter Route-matchning hittas, skickar CodeIgniter en sida som inte hittas ett undantag.
- CI Routing ansvarar för att svara på URL-förfrågningar. Routing matchar URL:en med de fördefinierade rutterna.
- Styrenheter limmar ihop modellerna och vyerna. Begäran om data / affärslogik från modellen och returnera resultaten via åsiktspresentationen.
- Synpunkter ansvarar för presentationen. En vy är vanligtvis en kombination av HTML, CSS och JavaManus.
- I den här handledningen har vi lärt oss hur man skapar rutter i CodeIgniter för en verklig exempelapplikation och täckte grunderna för routing som du behöver veta för att komma igång med att utveckla CodeIgniter.