CodeOntstekingsroutes: URL Routering met voorbeeld

Wat zijn CodeIgniter-routes?

Routes zijn verantwoordelijk voor het reageren op URL verzoeken. Routering komt overeen met de URL naar de vooraf gedefinieerde routes. Als er geen overeenkomende route wordt gevonden, dan... CodeIgniter geeft een 'pagina niet gevonden'-uitzondering.

Routes in CodeOntstekers worden gedefinieerd met behulp van de onderstaande formule:

example.com/Controller/Method/Parameter/

HIER,

  • Controller - wordt gekoppeld aan de naam van de controller die moet reageren op de URL.
  • Methode โ€“ wordt toegewezen aan de methode in de controller die moet reageren op het URI-verzoek.
  • Parameter โ€“ deze sectie is optioneel.

CodeVoorbeeld van ontstekingsroutes

Laten we nu eens naar een praktisch voorbeeld kijken. URL Binnen routeren Codeontsteker voorbeeld.

Stel je de volgende situatie voor URL http://localhost:3000/contacts/edit/1

HIER,

  • De naam van de controller die op het bovenstaande reageert 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 โ€“ routering is verantwoordelijk voor het reageren op URL verzoeken. CodeDe ontstekingsroutering komt overeen met de URL naar de vooraf gedefinieerde routes. Als er geen overeenkomende route wordt gevonden, dan CodeIgniter geeft een 'pagina niet gevonden'-uitzondering.
  • Regelaars โ€“ Routes zijn gekoppeld aan controllers. Controllers verbinden de modellen en weergaven met elkaar. Ze vragen gegevens/bedrijfslogica op vanuit het model en retourneren de resultaten via de weergave. Zodra een URL is gekoppeld aan een route in CodeIgniter stuurt het door naar een openbare controllerfunctie die interactie heeft met de gegevensbron en de bedrijfslogica, en de weergave retourneert die de resultaten toont.
  • 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 routers in een praktijkproject geรฏmplementeerd kunnen worden, gaan we ervan uit dat we een applicatie ontwikkelen voor het beheren van contactgegevens. De volgende tabel toont de URLdie zullen samenwerken.

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 volgende gedefinieerd: URLs, CodeIgniter-routes, en deze gekoppeld aan de respectieve controller- en methodenamen.

Wij creรซren URL Routering voor de applicatie

Laten we creรซren Codeontsteker URL Routing voor ons tutorialproject

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 URLs afgeleid van de hierboven gedefinieerde routes

S / N weg Overeenkomend 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 aan 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,

  • De klasse `contacts extends CI_Controller {..}` definieert onze controllerklasse en erft van de `CI_Controller`-klasse die wordt meegeleverd met CodeOntsteker.
  • 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 Views

We moeten nog รฉรฉn stap zetten voordat we onze test kunnen uitvoeren. CodeIgniter-routes met parameters in de webbrowser. Laten we de bijbehorende weergaven maken voor de bovenstaande controllermethoden.

De volgende afbeelding laat zien hoe uw applicatie eruit zal zien

CodeIgniter Views

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

CodeIgniter Views

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 het 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. Routering komt overeen met de URL naar de vooraf gedefinieerde routes. Indien geen CodeAls er een match met de Igniter-route wordt gevonden, CodeIgniter geeft een 'pagina niet gevonden'-uitzondering.
  • CI Routing is verantwoordelijk voor het reageren op URL verzoeken. Routering komt overeen met de URL naar 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 tutorial hebben we geleerd hoe je routes aanmaakt in CodeWe gebruikten Igniter als voorbeeld van een praktijktoepassing en behandelden de basisprincipes van routing die je moet kennen om te beginnen met ontwikkelen.ping CodeOntsteker.

Vat dit bericht samen met: