CodeIgniter Routes: URL-Routing mit Beispiel
Was sind CodeIgniter-Routen?
Routen sind für die Beantwortung von URL-Anfragen verantwortlich. Beim Routing wird die URL den vordefinierten Routen zugeordnet. Wenn keine Routenübereinstimmung gefunden wird, löst CodeIgniter eine Ausnahme aus, bei der die Seite nicht gefunden wurde.
Routen in CodeIgniter werden mit der folgenden Formel definiert:
example.com/Controller/Method/Parameter/
HIER,
- Controller – wird dem Controllernamen zugeordnet, der auf die URL antworten soll.
- Methode – wird der Methode im Controller zugeordnet, die auf die URI-Anfrage antworten soll.
- Parameter – dieser Abschnitt ist optional.
Beispiel für CodeIgniter-Routen
Schauen wir uns nun ein praktisches URL-Routing an CodeIgniter Beispiel.
Betrachten Sie die folgende URL http://localhost:3000/contacts/edit/1
HIER,
- Der Name des Verantwortlichen, der auf die obige URL antwortet, lautet „Kontakte“.
- Die Methode in der Controller-Klasse Kontakte ist „edit“
- Die Bearbeitungsmethode akzeptiert einen Parameter. In unserem Beispiel wird der Methode der Wert „1“ übergeben.
Hier ist ein kurzer Hintergrund unserer geplanten Maßnahmen:
- Routing – Routing ist für die Beantwortung von URL-Anfragen verantwortlich. CodeIgniter Routing ordnet die URL den vordefinierten Routen zu. Wenn keine Routenübereinstimmung gefunden wird, löst CodeIgniter die Ausnahme „Seite nicht gefunden“ aus.
- Regler – Routen sind mit Controllern verknüpft. Controller kleben die Modelle und Ansichten zusammen. Die Anforderung von Daten/Geschäftslogik aus dem Modell und die Rückgabe der Ergebnisse über die Ansichtspräsentation. Sobald eine URL einer Route in CodeIgniter zugeordnet wurde, wird sie an eine öffentliche Controller-Funktion weitergeleitet, die mit der Datenquelle und der Geschäftslogik interagiert und die Ansicht zurückgibt, die die Ergebnisse anzeigt.
- Views – Ansichten sind für die Darstellung verantwortlich. Eine Ansicht ist normalerweise eine Kombination aus HTML, CSS und JavaSkript. Dieser Teil ist für die Anzeige der Webseite für den Benutzer verantwortlich. Normalerweise werden die angezeigten Daten aus der Datenbank oder anderen verfügbaren Datenquellen abgerufen.
Um zu lernen, wie Router in einem realen Projekt implementiert werden, gehen wir davon aus, dass wir eine Anwendung zur Verwaltung von Kontaktdaten erstellen. Die folgende Tabelle zeigt die URLs, mit denen gearbeitet wird.
S / N | URL | Straße | Controller | Method |
---|---|---|---|---|
1 | / | $route['default_controller'] | WILLKOMMEN | Index |
2 | / Kontakte | $route['Kontakte'] | Kontakt | Index |
3 | /Kontakte/Erstellen | $route['create'] | Kontakt | erstellen |
4 | /contacts/edit/id | $route['edit/:id'] | Kontakt | bearbeiten |
5 | /contacts/update/id | $route['update/:id'] | Kontakt | Aktualisierung |
6 | /contacts/delete/id | $route['delete/:id'] | Kontakt | löschen |
Wir werden die Routen unserer Anwendung basierend auf der obigen Tabelle erstellen. Wir haben die URLs und die CodeIgniter-Route definiert und sie den jeweiligen Controller- und Methodennamen zugeordnet.
URL-Routing für die Anwendung erstellen
Lassen Sie uns CodeIgniter URL Routing für unser Tutorial-Projekt erstellen
Öffnen Sie application/config/routes.php
Passen Sie die Routen an die folgenden an
$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'] = 'willkommen'; Definiert den Standard-Controller Willkommen.
- $route['contacts'] = 'contacts'; Definiert eine Kontaktroute, die die Indexmethode im Kontaktcontroller aufruft
- $route['create'] = 'contacts/create'; Definiert eine Routenerstellung, die auf den Kontaktcontroller verweist und die Erstellungsmethode aufruft.
- $route['edit/:id'] = 'contacts/edit'; Definiert eine Routenbearbeitung, die den Parameter id akzeptiert und auf die Bearbeitungsmethode des Kontaktcontrollers verweist
- $route['update/:id'] = 'contacts/update'; Definiert eine Routenaktualisierung, die den Parameter id akzeptiert und auf die Update-Methode der Contacts-Klasse verweist.
- $route['delete/:id'] = 'contacts/delete'; Definiert eine Route delete, die den Parameter id akzeptiert und auf die Löschmethode des Contacts-Controllers verweist.
Die folgende Tabelle zeigt die jeweiligen URLs, die aus den oben definierten Routen abgeleitet wurden
S / N | Straße | Entsprechende URL |
---|---|---|
1 | $route['default_controller'] = 'willkommen'; | http://localhost:3000 |
2 | $route['contacts'] = 'contacts'; | http://localhost:3000/contacts |
3 | $route['create'] = 'contacts/create'; | http://localhost:3000/contacts/create |
4 | $route['edit/:id'] = 'contacts/edit'; | http://localhost:3000/contacts/edit/1 |
5 | $route['update/:id'] = 'contacts/update'; | http://localhost:3000/contacts/update/1 |
6 | $route['delete/:id'] = 'contacts/delete'; | http://localhost:3000/contacts/delete/1 |
Nachdem wir nun die Routen behandelt haben, erstellen wir den Kontakt-Controller, der auf die in den Routen angegebenen Aktionen reagiert.
Erstellen Sie in CodeIgniter eine neue Routendatei als Contacts.php in application/controllers/Contacts.php
Fügen Sie den folgenden Code hinzu
<?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,
- Klassenkontakte erweitert CI_Controller {..} definiert unsere Controller-Klasse und erweitert die CI_Controller-Klasse, die mit CodeIgniter geliefert wird.
- Die oben definierten Methoden entsprechen den von uns definierten Routen und diejenigen mit Parametern wie „delete“ akzeptieren den Parameter „$id“.
- Beachten Sie, dass die Funktionen drei (3) Ansichten laden. Die Kopf- und Fußzeile sind für alle Methoden gleich. Die mittlere Ansicht ist sehr spezifisch für die Aktion, z. B. „Löschen“ für die Funktion „Löschen“, „Erstellen einer Ansicht zum Erstellen einer Funktion“ usw. Ein weiterer wichtiger Punkt, den Sie beachten sollten, ist, dass die Ansichten aus dem Unterverzeichnis „Kontakte“ geladen werden.
CodeIgniter-Ansichten
Wir müssen noch einen weiteren Schritt machen, bevor wir unsere CodeIgniter-Routen mit Parametern im Webbrowser testen können. Lassen Sie uns die entsprechenden Ansichten zu den oben genannten Controller-Methoden erstellen.
Das folgende Bild zeigt, wie Ihre Anwendung aussehen wird
Erstellen Sie die folgenden Dateien in application/views
header.php – this file will contain contacts app menu and the header footer.php – this files will contain the application footer.
Erstellen Sie ein neues Kontaktverzeichnis in den Ansichten application/views/contacts
Erstellen Sie die folgenden Dateien darin
index.php create.php edit.php
Ihre Dateistruktur sollte wie folgt aussehen
Lassen Sie uns nun die header.php aktualisieren
<!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,
- Der obige HTML-Code lädt Burma-CSS aus einem CDN-Netzwerk.
Nachfolgend der Code für die footer.php
</div> </div> </section> </body> </html>
Fügen wir nun den Code für die Dateien index.php, edit.php und create.php für Kontakte hinzu.
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>
Sie können alle vorgenommenen Änderungen speichern.
Öffnen Sie die folgende URL in Ihrem Webbrowser http://localhost:3000/contacts/
Sie können auf die Links „Neuer Kontakt“ und „Kontakt bearbeiten“ klicken und sehen, was passiert
Zusammenfassung
- Routen in CI sind für die Beantwortung von URL-Anfragen verantwortlich. Beim Routing wird die URL den vordefinierten Routen zugeordnet. Wenn keine Übereinstimmung mit der CodeIgniter-Route gefunden wird, löst CodeIgniter eine Ausnahme aus, bei der die Seite nicht gefunden wurde.
- CI Routing ist für die Beantwortung von URL-Anfragen verantwortlich. Beim Routing wird die URL den vordefinierten Routen zugeordnet.
- Controller kleben die Modelle und Ansichten zusammen. Die Anforderung von Daten/Geschäftslogik aus dem Modell und die Rückgabe der Ergebnisse über die Ansichtspräsentation.
- Ansichten sind für die Darstellung verantwortlich. Eine Ansicht ist normalerweise eine Kombination aus HTML, CSS und JavaSkript.
- In diesem Tutorial haben wir gelernt, wie man Routen in CodeIgniter für eine reale Beispielanwendung erstellt, und haben die Grundlagen des Routings behandelt, die Sie kennen müssen, um mit der Entwicklung von CodeIgniter beginnen zu können.