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.

Oppsummer dette innlegget med: