CodeIgniter-routes: URL-routering met voorbeeld
Wat zijn CodeIgniter-routes?
Routes zijn verantwoordelijk voor het reageren op URL-verzoeken. Routing matcht de URL met de vooraf gedefinieerde routes. Als er geen routeovereenkomst wordt gevonden, genereert CodeIgniter een pagina die geen uitzondering heeft gevonden.
Routes in CodeIgniter worden gedefinieerd met behulp van de onderstaande formule:
example.com/Controller/Method/Parameter/
HIER,
- Controller -wordt toegewezen aan de controllernaam die op de URL moet reageren.
- Methode – wordt toegewezen aan de methode in de controller die moet reageren op het URI-verzoek.
- Parameter – deze sectie is optioneel.
Voorbeeld van CodeIgniter-routes
Laten we nu eens kijken naar een praktische URL-routering CodeIgniter voorbeeld.
Overweeg de volgende URL http://localhost:3000/contacts/edit/1
HIER,
- De naam van de verwerkingsverantwoordelijke die reageert op de bovenstaande URL is “contacten”
- De methode in de controllerklasse Contacten is “edit”
- De bewerkingsmethode accepteert een parameter. In het geval van ons voorbeeld wordt de waarde “1” doorgegeven aan de methode.
Hier is een korte achtergrond van wat we van plan zijn te doen:
- Routing – routing is verantwoordelijk voor het reageren op URL-verzoeken. CodeIgniter Routing matcht de URL met de vooraf gedefinieerde routes. Als er geen routematch wordt gevonden, genereert CodeIgniter een uitzondering voor 'Pagina niet gevonden'.
- Controllers – routes zijn gekoppeld aan controllers. Controllers lijmen de modellen en views aan elkaar. Het opvragen van data/bedrijfslogica vanuit het model en het retourneren van de resultaten via de weergavenpresentatie. Zodra een URL is gekoppeld aan een route in CodeIgniter, wordt deze doorgestuurd naar een openbare functie van de controller die samenwerkt met de gegevensbron en bedrijfslogica en de weergave retourneert waarin de resultaten worden weergegeven.
- Weergaves – standpunten zijn verantwoordelijk voor de presentatie. Een weergave is meestal een combinatie van HTML, CSS en JavaScript. Dit is het onderdeel dat verantwoordelijk is voor het weergeven van de webpagina aan de gebruiker. Meestal worden de weergegeven gegevens opgehaald uit de database of andere beschikbare gegevensbronnen.
Om te leren hoe u routers implementeert in een real-world project, gaan we ervan uit dat we een applicatie maken voor het beheren van contactgegevens. De volgende tabel toont de URL's waarmee gewerkt zal worden.
S / N | URL | weg | Controller | Methode |
---|---|---|---|---|
1 | / | $route['default_controller'] | Welkom | index |
2 | /contacten | $route['contacten'] | Contacten | index |
3 | /contacten/maken | $route['maken'] | Contacten | en je merk te creëren |
4 | /contacten/bewerken/id | $route['edit/:id'] | Contacten | Bewerken |
5 | /contacten/update/id | $route['update/:id'] | Contacten | -update |
6 | /contacten/verwijderen/id | $route['verwijder/:id'] | Contacten | verwijderen |
We zullen de routes van onze applicatie creëren op basis van de bovenstaande tabel. We hebben de URL's en de CodeIgniter-route gedefinieerd en toegewezen aan de respectievelijke controller- en methodenamen.
URL-routering voor de toepassing maken
Laten we CodeIgniter URL Routing maken voor ons zelfstudieproject
Open applicatie/config/routes.php
Pas de routes aan zodat ze overeenkomen met het volgende
$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;
HIER,
- $route['default_controller'] = 'welkom'; definieert de standaardcontroller Welkom.
- $route['contacten'] = 'contacten'; definieert een contactenroute die de indexmethode in de Contactencontroller aanroept
- $route['create'] = 'contacten/create'; definieert een route create die naar de Contacts-controller verwijst en de create-methode aanroept.
- $route['edit/:id'] = 'contacten/bewerken'; definieert een routebewerking die een parameter van id accepteert en verwijst naar de bewerkingsmethode van de Contacts-controller
- $route['update/:id'] = 'contacten/update'; definieert een route-update die een parameter id accepteert en verwijst naar de updatemethode van de klasse Contacts.
- $route['delete/:id'] = 'contacten/verwijderen'; definieert een routeverwijdering die een parameter van id accepteert en verwijst naar de verwijdermethode van de Contacts-controller.
De volgende tabel toont de respectievelijke URL's die zijn afgeleid van de hierboven gedefinieerde routes
S / N | weg | Overeenkomstige URL |
---|---|---|
1 | $route['default_controller'] = 'welkom'; | http://localhost:3000 |
2 | $route['contacten'] = 'contacten'; | http://localhost:3000/contacts |
3 | $route['create'] = 'contacten/create'; | http://localhost:3000/contacts/create |
4 | $route['edit/:id'] = 'contacten/bewerken'; | http://localhost:3000/contacts/edit/1 |
5 | $route['update/:id'] = 'contacten/update'; | http://localhost:3000/contacts/update/1 |
6 | $route['delete/:id'] = 'contacten/verwijderen'; | http://localhost:3000/contacts/delete/1 |
Nu we de routes hebben besproken, gaan we de Contacten-controller maken die zal reageren op de acties die in de routes zijn gespecificeerd.
Maak een nieuw routebestand in CodeIgniter als Contacts.php in application/controllers/Contacts.php
Voeg de volgende code toe
<?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'); } }
HIER,
- Klassecontacten breidt CI_Controller uit {..} definieert onze controllerklasse en breidt de CI_Controller-klasse uit die bij CodeIgniter wordt geleverd.
- De hierboven gedefinieerde methoden komen overeen met de routes die we hebben gedefinieerd en die met parameters zoals delete accepteren de parameter $id
- Merk op dat de functies drie (3) weergaven laden. De kop- en voettekst zijn voor alle methoden hetzelfde. De middelste weergave is zeer specifiek voor de actie, dwz verwijder voor verwijder-functie, maak een weergave voor het maken van een functie, enz. Een ander belangrijk ding om te onthouden is dat de weergaven worden geladen vanuit de submap met contactpersonen.
CodeIgniter-weergaven
We moeten nog een stap zetten voordat we onze CodeIgniter-routes met parameters in de webbrowser kunnen testen. Laten we de overeenkomstige weergaven voor de bovenstaande controllermethoden maken.
De volgende afbeelding laat zien hoe uw applicatie eruit zal zien
Maak de volgende bestanden in de toepassing/weergaven
header.php – this file will contain contacts app menu and the header footer.php – this files will contain the application footer.
Maak een nieuwe map met contacten in de weergavetoepassing/views/contacten
Maak de volgende bestanden binnen
index.php create.php edit.php
Uw bestandsstructuur zou als volgt moeten zijn
Laten we nu de header.php bijwerken
<!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>
HIER,
- De bovenstaande HTML-code laadt Birma CSS vanuit een CDN-netwerk.
Hieronder staat de code voor de footer.php
</div> </div> </section> </body> </html>
Laten we nu de code toevoegen voor de bestanden index.php, edit.php en create.php voor contacten.
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>
U kunt alle aangebrachte wijzigingen opslaan.
Open de volgende URL in uw webbrowser http://localhost:3000/contacts/
u kunt op de links Nieuw contact en Contact bewerken klikken en kijken wat er gebeurt
Samenvatting
- Routes in CI zijn verantwoordelijk voor het reageren op URL-verzoeken. Routing matcht de URL met de vooraf gedefinieerde routes. Als er geen CodeIgniter Route-match wordt gevonden, genereert CodeIgniter een pagina die geen uitzondering heeft gevonden.
- CI Routing is verantwoordelijk voor het reageren op URL-verzoeken. Routing matcht de URL met de vooraf gedefinieerde routes.
- Controllers lijmen de modellen en views aan elkaar. Het opvragen van data/bedrijfslogica vanuit het model en het retourneren van de resultaten via de weergavenpresentatie.
- Uitzichten zijn verantwoordelijk voor de presentatie. Een weergave is meestal een combinatie van HTML, CSS en JavaScript.
- In deze zelfstudie hebben we geleerd hoe u routes kunt maken in CodeIgniter voor een praktijkvoorbeeldtoepassing en hebben we de basisprincipes van routering besproken die u moet kennen om aan de slag te gaan met het ontwikkelen van CodeIgniter.