CodeTændingsruter: URL Routing med eksempel
⚡ Smart opsummering
Codetændsats URL Rutekort a URL til en controller og metode, med en valgfri parameter. Ruter er defineret i routes.php, så en ren URL ligesom contacts/edit/1 kører edit-metoden i Contacts-controlleren, som indlæser header-, indholds- og footer-visninger.

Hvad er CodeTændingsruter?
Ruterne er ansvarlige for at reagere på URL anmodninger. Routing matcher URL til de foruddefinerede ruter. Hvis der ikke findes et rutematch, CodeIgniter udløser en undtagelse af, at siden ikke findes.
Ruter i CodeTændingselementer defineres ved hjælp af formlen nedenfor:
example.com/Controller/Method/Parameter/
Her:
- Controlleren er knyttet til det controllernavn, der skal svare på URL.
- Metoden er knyttet til den metode i controlleren, der skal svare på URI-anmodningen.
- Parameter – dette afsnit er valgfrit.
CodeEksempel på tændingsruter
Lad os nu se på et praktisk URL routing i Codetændsats eksempel. Overvej følgende URL: http://localhost:3000/contacts/edit/1
Her:
- Navnet på den controller, der svarer på ovenstående URL er "kontakter".
- Metoden i controllerklassen Kontakter er “rediger”.
- Rediger-metoden accepterer en parameter. I vores eksempel sendes værdien "1" til metoden.
Her er en kort baggrund for, hvad vi planlægger at gøre:
- Routing – routing reagerer på URL anmodninger. CodeTændingsruten matcher URL til de foruddefinerede ruter. Hvis der ikke findes et rutematch, CodeIgniter udløser en undtagelse af, at siden ikke findes.
- Controllere – ruter er knyttet til controllere. Controllere binder modellerne og views sammen. De anmoder om data og forretningslogik fra modellen og returnerer resultaterne via viewets præsentation. Når en URL er blevet matchet med en rute, videresendes den til en offentlig funktion i controlleren, der interagerer med datakilden og forretningslogikken og returnerer visningen.
- Views – synspunkter er ansvarlige for præsentation. En visning er normalt en kombination af HTML, CSS og JavaScriptDenne del er ansvarlig for at vise websiden til brugeren. Typisk hentes de viste data fra databasen eller en anden datakilde.
For at lære at implementere ruter i et virkeligt projekt, antager vi, at vi opretter en applikation til administration af kontaktoplysninger. Følgende tabel viser URLs vi vil arbejde med.
| S / N | URL | R | controller | Metode |
|---|---|---|---|---|
| 1 | / | $route['default_controller'] | Velkommen! | indeks |
| 2 | / kontakter | $route['kontakter'] | Kontakt os | indeks |
| 3 | /kontakter/opret | $route['create'] | Kontakt os | skabe |
| 4 | /contacts/edit/id | $route['edit/:id'] | Kontakt os | redigere |
| 5 | /contacts/update/id | $route['update/:id'] | Kontakt os | opdatering |
| 6 | /contacts/delete/id | $route['delete/:id'] | Kontakt os | slette |
Vi opretter ruterne for vores applikation baseret på ovenstående tabel. Vi har defineret URLs, den CodeIgniter-ruten og kortlagde dem til de respektive controller- og metodenavne.
Oprettelse af URL Routing for applikationen
Lad os skabe Codetændsats URL routing til vores vejledningsprojekt. Åbn application/config/routes.php og rediger ruterne, så de matcher 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 standardcontrolleren Velkommen.
- $route['contacts'] = 'contacts'; definerer en kontaktrute, der kalder index-metoden i Contacts-controlleren.
- $route['create'] = 'contacts/create'; definerer en rute create, der peger på Contacts-controlleren og kalder create-metoden.
- $route['edit/:id'] = 'contacts/edit'; definerer en ruteredigering, der accepterer parameteren id og peger på redigeringsmetoden i Contacts-controlleren.
- $route['update/:id'] = 'kontakter/opdatering'; definerer en ruteopdatering, der accepterer parameteren id og peger på opdateringsmetoden i Kontakter-klassen.
- $route['delete/:id'] = 'contacts/delete'; definerer en sletterute, der accepterer parameteren id og peger på slettemetoden i Contacts-controlleren.
Følgende tabel viser de respektive URLs afledt af de ovenfor definerede ruter:
| S / N | R | Tilsvarende URL |
|---|---|---|
| 1 | $route['default_controller'] = 'velkommen'; | http://localhost:3000 |
| 2 | $route['contacts'] = 'kontakter'; | http://localhost:3000/contacts |
| 3 | $route['create'] = 'kontakter/opret'; | http://localhost:3000/contacts/create |
| 4 | $route['edit/:id'] = 'kontakter/rediger'; | http://localhost:3000/contacts/edit/1 |
| 5 | $route['update/:id'] = 'kontakter/opdatering'; | http://localhost:3000/contacts/update/1 |
| 6 | $route['delete/:id'] = 'kontakter/slet'; | http://localhost:3000/contacts/delete/1 |
Nu hvor vi har dækket ruterne, lad os oprette Contacts-controlleren, der skal reagere på de handlinger, der er angivet i ruterne. Opret en ny fil, Contacts.php, i application/controllers/Contacts.php, og tilføj 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:
- class Contacts extends CI_Controller {…} definerer vores controllerklasse og udvider CI_Controller-klassen, der følger med CodeTændingsapparat.
- Metoderne defineret ovenfor svarer til de ruter, vi definerede, og dem med parametre som delete accepterer parameteren $id.
- Bemærk at funktionerne indlæser tre visninger. Sidehovedet og sidefoden er fælles for alle metoder. Den midterste visning er specifik for handlingen, dvs. slet for slettefunktionen og opret for opretfunktionen. En anden vigtig ting at huske er, at visningerne indlæses fra undermappen kontakter.
CodeIgniter Views
Vi mangler stadig et trin mere, før vi kan teste vores CodeIgniter-ruter med parametre i webbrowseren. Lad os oprette de visninger, der svarer til controllermetoderne ovenfor. Følgende billede viser, hvordan applikationen vil se ud:
Opret følgende filer i application/views:
header.php – this file will contain the contacts app menu and the header footer.php – this file will contain the application footer
Opret en ny mappe med kontakter i application/views (application/views/contacts) og opret følgende filer i den:
index.php create.php edit.php
Din filstruktur skal være som følger:
Lad os nu opdatere header.php-filen:
<!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 indlæser Bulma CSS fra et CDN.
Følgende er koden til footer.php-filen:
</div> </div> </section> </body> </html>
Lad os nu tilføje koden til index.php-, edit.php- og create.php-filerne 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 gemme alle de ændringer, der er foretaget. Åbn følgende URL i din webbrowser: http://localhost:3000/contacts/Du kan klikke på linkene Ny kontakt og Rediger kontakt og se, hvad der sker.


