CodeIgniter-ruter: URL-routing med eksempel

Hvad er CodeIgniter-ruter?

Ruter er ansvarlige for at svare på URL-anmodninger. Routing matcher URL'en til de foruddefinerede ruter. Hvis der ikke findes nogen rutematch, kaster CodeIgniter en side ikke fundet en undtagelse.

Ruter i CodeIgniter er defineret ved hjælp af nedenstående formel:

example.com/Controller/Method/Parameter/

HER,

  • Controller - er knyttet til controllernavnet, der skal svare på URL'en.
  • Metode – er knyttet til den metode i controlleren, der skal svare på URI-anmodningen.
  • Parameter – dette afsnit er valgfrit.

Eksempel på CodeIgniter-ruter

Lad os nu se på en praktisk URL-routing ind CodeIgniter 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 "edit"
  • Redigeringsmetoden accepterer en parameter. I tilfældet med vores eksempel overføres værdien "1" til metoden.

Her er en kort baggrund for, hvad vi planlægger at gøre:

  • Routing – routing er ansvarlig for at svare på URL-anmodninger. CodeIgniter Routing matcher URL'en til de foruddefinerede ruter. Hvis der ikke findes et rutematch, kaster CodeIgniter en side ikke fundet undtagelse.
  • Controllere – ruter er knyttet til controllere. Controllere limer modellerne og visningerne sammen. Anmodningen om data / forretningslogik fra modellen og returnere resultaterne via visningspræsentationen. Når en URL er blevet matchet med en rute i CodeIgniter, videresendes den til en controller offentlig funktion, der interagerer med datakilden, forretningslogikken og returnerer den visning, der viser resultaterne.
  • Views – synspunkter er ansvarlige for præsentation. En visning er normalt en kombination af HTML, CSS og JavaScript. Dette er den del, der er ansvarlig for at vise websiden til brugeren. Typisk hentes de viste data normalt fra databasen eller andre tilgængelige datakilder.

For at lære, hvordan man implementerer routere på et projekt i den virkelige verden, antager vi, at vi opretter en applikation til at administrere kontaktoplysninger. Følgende tabel viser de URL'er, der 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 vil oprette ruterne for vores applikation baseret på ovenstående tabel. Vi har defineret URL'erne, CodeIgniter-ruten, og kortlagt dem til de respektive controller- og metodenavne.

Oprettelse af URL-routing for applikationen

Lad os oprette CodeIgniter URL Routing til vores selvstudieprojekt

Åbn application/config/routes.php

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'] = 'kontakter'; definerer en kontaktrute, som kalder indeksmetoden i kontaktcontrolleren
  • $route['create'] = 'kontakter/opret'; definerer en rute oprettelse, som peger på kontaktkontrolenheden og kalder oprettelsesmetoden.
  • $route['edit/:id'] = 'kontakter/rediger'; definerer en ruteredigering, som accepterer parameteren id og peger på redigeringsmetoden for kontaktcontroller
  • $route['update/:id'] = 'kontakter/opdatering'; definerer en ruteopdatering, som accepterer parameteren id og peger på opdateringsmetoden for klassen Contacts.
  • $route['delete/:id'] = 'kontakter/slet'; definerer en rutesletning, som accepterer parameteren id og peger på slettemetoden for kontaktcontrolleren.

Følgende tabel viser de respektive URL'er 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 kontaktcontrolleren, der vil reagere på de handlinger, der er angivet i ruterne.

Opret en ny rutefil i CodeIgniter som Contacts.php i application/controllers/Contacts.php

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,

  • Klassekontakter udvider CI_Controller {..} definerer vores controller-klasse og udvider CI_Controller-klassen, som kommer med CodeIgniter.
  • De ovenfor definerede metoder svarer til de ruter, vi har defineret, og dem med parametre som slet accepterer en parameter på $id
  • Bemærk, at funktionerne indlæser tre (3) visninger. Sidehoved og sidefod er fælles for alle metoder. Den midterste visning er meget specifik for handlingen, dvs. slet for slet-funktion opret en visning til oprettelse af en funktion osv. En anden vigtig ting at huske er, at visningerne indlæses fra kontaktunderbiblioteket.

CodeIgniter-visninger

Vi mangler stadig at tage et skridt mere, før vi kan teste vores CodeIgniter-ruter med parametre i webbrowseren. Lad os oprette de tilsvarende visninger til ovenstående controllermetoder.

Følgende billede viser, hvordan din applikation vil se ud

CodeIgniter-visninger

Opret følgende filer i applikation/visninger

header.php – this file will contain contacts app menu and the header
footer.php – this files will contain the application footer.

Opret en ny mappe med kontakter i visningsapplikation/visninger/kontakter

Opret følgende filer indeni

index.php
create.php
edit.php

Din filstruktur skal være som følger

CodeIgniter-visninger

Lad os nu opdatere 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,

  • Ovenstående HTML-kode indlæser Burma CSS fra et CDN-netværk.

Følgende er koden til footer.php

            </div>
            </div>
        </section>
    </body>
</html>

Lad os nu tilføje koden til filerne index.php, edit.php og create.php til 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

Resumé

  • Ruter i CI er ansvarlige for at svare på URL-anmodninger. Routing matcher URL'en til de foruddefinerede ruter. Hvis der ikke findes noget CodeIgniter-rutematch, sender CodeIgniter en side, der ikke er fundet en undtagelse.
  • CI Routing er ansvarlig for at svare på URL-anmodninger. Routing matcher URL'en til de foruddefinerede ruter.
  • Controllere limer modellerne og visningerne sammen. Anmodningen om data / forretningslogik fra modellen og returnere resultaterne via visningspræsentationen.
  • Synspunkter er ansvarlige for præsentationen. En visning er normalt en kombination af HTML, CSS og JavaManuskript.
  • I denne vejledning har vi lært, hvordan du opretter ruter i CodeIgniter til et eksempel på en applikation i den virkelige verden, og vi har dækket det grundlæggende i routing, som du skal vide for at komme i gang med at udvikle CodeIgniter.