CodeIgniter-ruter: URL-ruting med eksempel

Hva er CodeIgniter-ruter?

Ruter er ansvarlige for å svare på URL-forespørsler. Ruting matcher URL-en til de forhåndsdefinerte rutene. Hvis ingen rutematch blir funnet, kaster CodeIgniter en side som ikke ble funnet et unntak.

Ruter i CodeIgniter er definert ved hjelp av formelen nedenfor:

example.com/Controller/Method/Parameter/

HER,

  • Kontroller - er tilordnet kontrollernavnet som skal svare på URL-en.
  • Metode – er tilordnet metoden i kontrolleren som skal svare på URI-forespørselen.
  • Parameter – denne delen er valgfri.

CodeIgniter-ruter eksempel

La oss nå se på en praktisk URL-ruting inn CodeIgniter eksempel.

Tenk på følgende URL http://localhost:3000/contacts/edit/1

HER,

  • Navnet på kontrolleren som svarer på URL-en ovenfor er "kontakter"
  • Metoden i kontrollerklassen Kontakter er "edit"
  • Redigeringsmetoden godtar en parameter. Når det gjelder vårt eksempel, overføres verdien "1" til metoden.

Her er en kort bakgrunn for hva vi planlegger å gjøre:

  • Routing – ruting er ansvarlig for å svare på URL-forespørsler. CodeIgniter Routing matcher URL-en til de forhåndsdefinerte rutene. Hvis ikke rutematch blir funnet, kaster CodeIgniter et unntak fra siden ikke funnet.
  • Controllers – ruter er knyttet til kontrollere. Kontrollere limer modellene og visningene sammen. Forespørselen om data / forretningslogikk fra modellen og returner resultatene via visningspresentasjonen. Når en URL har blitt matchet med en rute i CodeIgniter, videresendes den til en offentlig kontrollfunksjon som samhandler med datakilden, forretningslogikken og returnerer visningen som viser resultatene.
  • Visninger – synspunkter er ansvarlige for presentasjon. En visning er vanligvis en kombinasjon av HTML, CSS og JavaScript. Dette er den delen som er ansvarlig for å vise nettsiden til brukeren. Vanligvis hentes dataene som vises vanligvis fra databasen eller andre tilgjengelige datakilder.

For å lære hvordan du implementerer rutere på et prosjekt i den virkelige verden, antar vi at vi lager et program for å administrere kontaktdetaljer. Tabellen nedenfor viser nettadressene som skal jobbes med.

S / N URL Rute controller Metode
1 / $route['default_controller'] Velkommen indeks
2 /kontakter $route['kontakter'] Kontakter indeks
3 /kontakter/opprett $route['skape'] Kontakter skape
4 /contacts/edit/id $route['edit/:id'] Kontakter redigere
5 /contacts/update/id $route['update/:id'] Kontakter Oppdater
6 /contacts/delete/id $route['delete/:id'] Kontakter slette

Vi vil lage rutene for applikasjonen vår basert på tabellen ovenfor. Vi har definert URL-ene, CodeIgniter-ruten, og kartlagt dem til de respektive kontrollerne og metodenavnene.

Opprette URL-ruting for applikasjonen

La oss lage CodeIgniter URL-ruting for opplæringsprosjektet vårt

Åpne application/config/routes.php

Endre rutene slik at de samsvarer med 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 standardkontrolleren Velkommen.
  • $route['contacts'] = 'kontakter'; definerer en kontaktrute som kaller indeksmetoden i kontaktkontrolleren
  • $route['create'] = 'kontakter/opprett'; definerer en ruteoppretting som peker til kontaktkontrolleren og kaller opprettingsmetoden.
  • $route['edit/:id'] = 'kontakter/rediger'; definerer en ruteredigering som godtar parameteren id og peker til redigeringsmetoden til kontaktkontrolleren
  • $route['update/:id'] = 'kontakter/oppdatering'; definerer en ruteoppdatering som aksepterer parameteren id og peker på oppdateringsmetoden til klassen Kontakter.
  • $route['delete/:id'] = 'kontakter/slett'; definerer en rutesletting som aksepterer parameteren id og peker på slettemetoden til kontaktkontrolleren.

Tabellen nedenfor viser de respektive URL-ene som er avledet fra de ovenfor definerte rutene

S / N Rute Tilsvarende URL
1 $route['default_controller'] = 'velkommen'; http://localhost:3000
2 $route['contacts'] = 'kontakter'; http://localhost:3000/contacts
3 $route['create'] = 'kontakter/opprett'; http://localhost:3000/contacts/create
4 $route['edit/:id'] = 'kontakter/rediger'; http://localhost:3000/contacts/edit/1
5 $route['update/:id'] = 'kontakter/oppdatering'; http://localhost:3000/contacts/update/1
6 $route['delete/:id'] = 'kontakter/slett'; http://localhost:3000/contacts/delete/1

Nå som vi har dekket rutene, la oss lage kontaktkontrolleren som vil svare på handlingene spesifisert i rutene.

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

Legg til 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 utvider CI_Controller {..} definerer kontrollerklassen vår og utvider CI_Controller-klassen som følger med CodeIgniter.
  • Metodene definert ovenfor tilsvarer rutene vi definerte, og de med parametere som slett godtar en parameter på $id
  • Legg merke til at funksjonene laster inn tre (3) visninger. Topptekst og bunntekst er felles for alle metoder. Den midterste visningen er veldig spesifikk for handlingen, dvs. slett for slettefunksjon opprette en visning for å lage en funksjon osv. En annen viktig ting å huske er at visningene lastes fra underkatalogen for kontakter.

CodeIgniter-visninger

Vi må fortsatt ta ett steg til før vi kan teste våre CodeIgniter-ruter med parametere i nettleseren. La oss lage de tilsvarende visningene til kontrollmetodene ovenfor.

Følgende bilde viser hvordan applikasjonen din vil se ut

CodeIgniter-visninger

Opprett følgende filer i applikasjon/visninger

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

Opprett en ny katalog med kontakter i visningsprogram/visninger/kontakter

Lag følgende filer inne

index.php
create.php
edit.php

Filstrukturen din skal være som følger

CodeIgniter-visninger

La oss nå oppdatere 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,

  • HTML-koden ovenfor laster Burma CSS fra et CDN-nettverk.

Følgende er koden for footer.php

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

La oss nå legge til koden for filene index.php, edit.php og create.php 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 lagre alle endringene som er gjort.

Åpne følgende URL i nettleseren din http://localhost:3000/contacts/

du kan klikke på koblingene Ny kontakt og Rediger kontakt og se hva som skjer

Sammendrag

  • Ruter i CI er ansvarlige for å svare på URL-forespørsler. Ruting matcher URL-en til de forhåndsdefinerte rutene. Hvis ingen CodeIgniter Route-match blir funnet, kaster CodeIgniter en side som ikke ble funnet et unntak.
  • CI Routing er ansvarlig for å svare på URL-forespørsler. Ruting matcher URL-en til de forhåndsdefinerte rutene.
  • Kontrollere limer modellene og visningene sammen. Forespørselen om data / forretningslogikk fra modellen og returner resultatene via visningspresentasjonen.
  • Synspunkter er ansvarlig for presentasjon. En visning er vanligvis en kombinasjon av HTML, CSS og JavaManus.
  • I denne opplæringen har vi lært hvordan du lager ruter i CodeIgniter for et eksempelprogram i den virkelige verden og dekket det grunnleggende om ruting som du trenger å vite for å komme i gang med å utvikle CodeIgniter.