Trasy CodeIgniter: routing URL z przykładem

Czym są trasy CodeIgniter?

Trasy są odpowiedzialne za odpowiadanie na żądania adresu URL. Routing dopasowuje adres URL do wstępnie zdefiniowanych tras. Jeśli nie zostanie znaleziona żadna pasująca trasa, CodeIgniter zgłasza wyjątek dotyczący strony, która nie została znaleziona.

Trasy w CodeIgniter są definiowane przy użyciu poniższego wzoru:

example.com/Controller/Method/Parameter/

TUTAJ,

  • Kontroler - jest mapowany na nazwę kontrolera, który powinien odpowiadać na adres URL.
  • Metoda – jest mapowana na metodę w kontrolerze, która powinna odpowiedzieć na żądanie URI.
  • Parametr – ta sekcja jest opcjonalna.

Przykład tras CodeIgnitera

Przyjrzyjmy się teraz praktycznemu routingowi URL CodeIgniter przykład.

Rozważ następujący adres URL http://localhost:3000/contacts/edit/1

TUTAJ,

  • Nazwa administratora odpowiadającego na powyższy adres URL to „kontakty”
  • Metodą w klasie kontrolera Kontakty jest „edycja”
  • Metoda edycji akceptuje parametr. W naszym przykładzie do metody przekazywana jest wartość „1”.

Oto krótki zarys tego, co planujemy zrobić:

  • Wyznaczanie tras – routing odpowiada za odpowiadanie na żądania URL. CodeIgniter Routing dopasowuje adres URL do wstępnie zdefiniowanych tras. Jeśli nie zostanie znalezione dopasowanie trasy, CodeIgniter zgłasza wyjątek „nie znaleziono strony”.
  • Sterowniki – trasy są powiązane ze sterownikami. Kontrolery sklejają modele i widoki. Żądanie danych/logiki biznesowej z modelu i zwrócenie wyników poprzez prezentację widoków. Po dopasowaniu adresu URL do trasy w CodeIgniter jest on przekazywany do publicznej funkcji kontrolera, która wchodzi w interakcję ze źródłem danych, logiką biznesową i zwraca widok wyświetlający wyniki.
  • odwiedzajacy – widoki odpowiadają za prezentację. Widok jest zazwyczaj kombinacją HTML, CSS i JAVASCRIPT. Ta część jest odpowiedzialna za wyświetlanie strony internetowej użytkownikowi. Zazwyczaj wyświetlane dane są zazwyczaj pobierane z bazy danych lub innych dostępnych źródeł danych.

Aby dowiedzieć się, jak wdrożyć routery w rzeczywistym projekcie, założymy, że tworzymy aplikację do zarządzania danymi kontaktowymi. Poniższa tabela pokazuje adresy URL, które będą działać.

S / N URL Trasa kontroler Metoda wykonania
1 / $trasa['domyślny_kontroler'] Witaj wskaźnik
2 /Łączność $trasa['kontakty'] Kontakt wskaźnik
3 /kontakty/utwórz $trasa['utwórz'] Kontakt Stwórz
4 /kontakty/edytuj/identyfikator $trasa['edycja/:id'] Kontakt edit
5 /kontakty/aktualizacja/identyfikator $trasa['update/:id'] Kontakt aktualizacja
6 /kontakty/usuń/id $trasa['usuń/:id'] Kontakt usunąć

W oparciu o powyższą tabelę utworzymy trasy naszej aplikacji. Zdefiniowaliśmy adresy URL, trasę CodeIgnitera i zmapowaliśmy je na odpowiednie nazwy kontrolerów i metod.

Tworzenie routingu URL dla aplikacji

Utwórzmy routing URL CodeIgniter dla naszego projektu samouczka

Otwórz aplikację/config/routes.php

Zmodyfikuj trasy, aby odpowiadały następującym

$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;

TUTAJ,

  • $route['default_controller'] = 'witaj'; definiuje domyślny kontroler Witamy.
  • $route['kontakty'] = 'kontakty'; definiuje trasę kontaktów, która wywołuje metodę indeksu w kontrolerze Kontakty
  • $route['create'] = 'kontakty/utwórz'; definiuje trasę create, która wskazuje na kontroler Contacts i wywołuje metodę create.
  • $route['edit/:id'] = 'kontakty/edytuj'; definiuje edycję trasy, która przyjmuje parametr o id i wskazuje na metodę edycji kontrolera Kontakty
  • $route['update/:id'] = 'kontakty/aktualizacja'; definiuje aktualizację trasy, która akceptuje parametr o id i wskazuje na metodę aktualizacji klasy Contacts.
  • $route['delete/:id'] = 'kontakty/usuń'; definiuje trasę usuwania, która akceptuje parametr id i wskazuje na metodę usuwania kontrolera Kontakty.

W poniższej tabeli przedstawiono odpowiednie adresy URL pochodzące z tras zdefiniowanych powyżej

S / N Trasa Odpowiedni adres URL
1 $route['default_controller'] = 'witaj'; http://localhost:3000
2 $route['kontakty'] = 'kontakty'; http://localhost:3000/contacts
3 $route['create'] = 'kontakty/utwórz'; http://localhost:3000/contacts/create
4 $route['edit/:id'] = 'kontakty/edytuj'; http://localhost:3000/contacts/edit/1
5 $route['update/:id'] = 'kontakty/aktualizacja'; http://localhost:3000/contacts/update/1
6 $route['delete/:id'] = 'kontakty/usuń'; http://localhost:3000/contacts/delete/1

Teraz, gdy omówiliśmy już trasy, utwórzmy kontroler Kontaktów, który będzie reagował na działania określone na trasach.

Utwórz nowy plik trasy w CodeIgniter jako Contacts.php w application/controllers/Contacts.php

Dodaj następujący kod

<?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');
    }
}

TUTAJ,

  • Klasa kontaktów rozszerza CI_Controller {..} definiuje naszą klasę kontrolera i rozszerza klasę CI_Controller dostarczaną z CodeIgniter.
  • Metody zdefiniowane powyżej odpowiadają zdefiniowanym przez nas trasom, a te z parametrami takimi jak Delete akceptują parametr $id
  • Zwróć uwagę, że funkcje ładują trzy (3) widoki. Nagłówek i stopka są wspólne dla wszystkich metod. Widok środkowy jest bardzo specyficzny dla akcji, tzn. usuń dla funkcji usuwania, utwórz widok dla utworzenia funkcji itp. Kolejną ważną rzeczą, o której należy pamiętać, jest to, że widoki są ładowane z podkatalogu kontaktów.

Widoki CodeIgnitera

Musimy jeszcze zrobić jeszcze jeden krok, zanim będziemy mogli przetestować nasze trasy CodeIgniter z parametrami w przeglądarce internetowej. Utwórzmy odpowiednie widoki dla powyższych metod kontrolera.

Poniższy obraz pokazuje, jak będzie wyglądać Twoja aplikacja

Widoki CodeIgnitera

Utwórz następujące pliki w aplikacji/widoki

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

Utwórz nowy katalog kontaktów w aplikacji widoków/widokach/kontaktach

Utwórz następujące pliki w środku

index.php
create.php
edit.php

Struktura plików powinna wyglądać następująco

Widoki CodeIgnitera

Zaktualizujmy teraz plik 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>

TUTAJ,

  • Powyższy kod HTML ładuje Birma CSS z sieci CDN.

Poniżej znajduje się kod dla pliku footer.php

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

Dodajmy teraz kod dla plików Index.php, edit.php i create.php dla kontaktów.

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>

Możesz zapisać wszystkie wprowadzone zmiany.

Otwórz następujący adres URL w swojej przeglądarce internetowej http://localhost:3000/contacts/

możesz kliknąć łącza Nowy kontakt i Edytuj kontakt i zobaczyć, co się stanie

Podsumowanie

  • Trasy w CI są odpowiedzialne za odpowiadanie na żądania URL. Routing dopasowuje adres URL do wstępnie zdefiniowanych tras. Jeśli nie zostanie odnaleziona żadna zgodna trasa CodeIgniter, CodeIgniter zgłosi wyjątek dotyczący strony, która nie została znaleziona.
  • CI Routing jest odpowiedzialny za odpowiadanie na żądania URL. Routing dopasowuje adres URL do wstępnie zdefiniowanych tras.
  • Kontrolery sklejają modele i widoki. Żądanie danych/logiki biznesowej z modelu i zwrócenie wyników poprzez prezentację widoków.
  • Za prezentację odpowiedzialne są widoki. Widok jest zazwyczaj kombinacją HTML, CSS i JavaScenariusz.
  • W tym samouczku nauczyliśmy się, jak tworzyć trasy w CodeIgniter dla przykładowej aplikacji ze świata rzeczywistego i omówiliśmy podstawy routingu, które musisz znać, aby rozpocząć tworzenie CodeIgniter.