CodeTrasy zapłonnika: URL Trasowanie z przykładem

⚡ Inteligentne podsumowanie

CodeZapalnik URL Mapy trasowania URL do kontrolera i metody z opcjonalnym parametrem. Trasy są definiowane w pliku routes.php, więc czysty URL Podobnie jak contacts/edit/1 uruchamia metodę edycji kontrolera Contacts, która ładuje widoki nagłówka, treści i stopki.

  • 🧭 Zasada podstawowa: Trasa pasuje do URL do kontrolera, metody i opcjonalnego parametru.
  • 📐 Wzór: Wzorzec to Kontroler/Metoda/Parametr zdefiniowany w pliku application/config/routes.php.
  • 🏠 Trasa domyślna: default_controller ustawia stronę główną, gdy nie URL podany jest segment.
  • 🔢 Parametry: Trasa taka jak edit/:id przekazuje wartość id do metody kontrolera.
  • 🎛️ Kontroler: Każda trasa odwzorowuje metodę, która ładuje pasujące widoki.
  • 🖼️ Wspólne poglądy: Widoki nagłówka i stopki są ponownie wykorzystywane, z określonym widokiem środkowym dla każdej akcji.
  • ❓ 404 Postępowanie: Niezrównany URL podnosi wyjątek „page-not-found”, który można pominąć za pomocą 404_override.

CodeTrasy zapłonnika

Jakie są CodeTrasy zapłonu?

Trasy odpowiadają za reagowanie na URL żądania. Trasowanie pasuje do URL do predefiniowanych tras. Jeśli nie zostanie znaleziona żadna pasująca trasa, CodeIgniter zgłasza wyjątek „strona nie została znaleziona”.

Trasy w CodeZapłonnik definiuje się za pomocą poniższego wzoru:

example.com/Controller/Method/Parameter/

Tutaj:

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

CodePrzykład tras zapłonnika

Przyjrzyjmy się teraz praktycznemu URL routing w CodeZapalnik przykład. Rozważmy następujące URL: http://localhost:3000/contacts/edit/1

Tutaj:

  • Nazwa kontrolera odpowiadającego na powyższe URL to „kontakty”.
  • Metodą w klasie kontrolera Contacts jest „edit”.
  • 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 na URL wnioski. CodeTrasowanie zapłonnika jest zgodne z URL do predefiniowanych tras. Jeśli nie zostanie znaleziona żadna pasująca trasa, CodeIgniter zgłasza wyjątek „strona nie została znaleziona”.
  • Sterowniki – trasy są powiązane z kontrolerami. Kontrolery sklejają modele i widoki. Żądają danych i logiki biznesowej z modelu i zwracają wyniki za pośrednictwem prezentacji widoku. Po URL został dopasowany do trasy, jest przekazywany do publicznej funkcji kontrolera, która wchodzi w interakcję ze źródłem danych i logiką biznesową oraz zwraca widok.
  • odwiedzajacy – widoki odpowiadają za prezentację. Widok jest zazwyczaj kombinacją HTML, CSS i JAVASCRIPTTa część odpowiada za wyświetlanie strony internetowej użytkownikowi. Zazwyczaj wyświetlane dane są pobierane z bazy danych lub innego źródła danych.

Aby dowiedzieć się, jak wdrożyć trasy w rzeczywistym projekcie, zakładamy, że tworzymy aplikację do zarządzania danymi kontaktowymi. Poniższa tabela przedstawia URLz którymi będziemy współpracować.

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ąć

Utworzymy trasy naszej aplikacji na podstawie powyższej tabeli. Zdefiniowaliśmy URLs CodeTrasa Igniter i mapowanie ich na odpowiednie nazwy kontrolerów i metod.

Tworzenie URL Trasowanie dla aplikacji

Stwórzmy CodeZapalnik URL Trasowanie dla naszego projektu samouczka. Otwórz plik application/config/routes.php i zmodyfikuj trasy, aby odpowiadały następującym warunkom:

$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['contacts'] = 'contacts'; definiuje trasę kontaktów, która wywołuje metodę index w kontrolerze Contacts.
  • $route['create'] = 'contacts/create'; definiuje trasę tworzenia wskazującą na kontroler Contacts i wywołuje metodę create.
  • $route['edit/:id'] = 'contacts/edit'; definiuje edycję trasy, która akceptuje parametr id i wskazuje na metodę edycji kontrolera Contacts.
  • $route['update/:id'] = 'contacts/update'; definiuje aktualizację trasy, która akceptuje parametr id i wskazuje na metodę update klasy Contacts.
  • $route['delete/:id'] = 'contacts/delete'; definiuje trasę usuwania, która akceptuje parametr id i wskazuje na metodę delete kontrolera Contacts.

W poniższej tabeli przedstawiono odpowiednie URLpochodzące ze zdefiniowanych powyżej tras:

S / N Trasa Odpowiedni 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

Skoro omówiliśmy już trasy, utwórzmy kontroler Contacts, który będzie reagował na akcje określone w trasach. Utwórz nowy plik Contacts.php w katalogu application/controllers/Contacts.php i 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 Contacts rozszerza CI_Controller {…} definiuje naszą klasę kontrolera i rozszerza klasę CI_Controller, która jest dostarczana z CodeZapalnik.
  • Metody zdefiniowane powyżej odpowiadają trasom, które zdefiniowaliśmy, a te z parametrami, takimi jak delete, akceptują parametr $id.
  • Zwróć uwagę, że funkcje ładują trzy widoki. Nagłówek i stopka są wspólne dla wszystkich metod. Widok środkowy jest specyficzny dla danej akcji, tj. „delete” dla funkcji „delete” i „create” dla funkcji „create”. Kolejną ważną rzeczą, o której należy pamiętać, jest to, że widoki są ładowane z podkatalogu „contacts”.

CodeWidoki zapłonnika

Potrzebujemy jeszcze jednego kroku, zanim będziemy mogli przetestować nasze CodeTrasy Ignitera z parametrami w przeglądarce internetowej. Utwórzmy widoki odpowiadające powyższym metodom kontrolera. Poniższy obrazek pokazuje, jak będzie wyglądać aplikacja:

CodePodgląd aplikacji Igniter Contacts

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

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

Utwórz nowy katalog contacts wewnątrz aplikacji/views (application/views/contacts) i utwórz w nim następujące pliki:

index.php
create.php
edit.php

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

CodeStruktura plików widoków Igniter

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 arkusz CSS Bulmy z CDN.

Poniżej znajduje się kod 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ące okno URL w Twojej przeglądarce internetowej: http://localhost:3000/contacts/Możesz kliknąć na odnośniki Nowy kontakt i Edytuj kontakt i zobaczyć, co się stanie.

FAQ

Zdefiniuj trasę za pomocą symbolu zastępczego, takiego jak edit/:id, i zaakceptuj pasujący argument w metodzie kontrolera, na przykład edit($id). CodeZapłonnik przechodzi URL segment do tego argumentu.

CodeIgniter zgłasza wyjątek „page-not-found” i wyświetla stronę błędu 404. Możesz wskazać komendę 404_override swojemu kontrolerowi, aby wyświetlić niestandardową stronę błędu.

site_url() tworzy pełną URL z adresu base_url i trasy, dzięki czemu linki będą działać, nawet jeśli witryna zostanie przeniesiona lub ścieżka bazowa ulegnie zmianie. Potrzebuje URL pomocnik, który ma zostać załadowany jako pierwszy.

Tak. Z nazwy zasobu, takiej jak kontakty, AI może wygenerować indeks, tworzyć, edytować, aktualizować i usuwać trasy z odpowiednimi metodami kontrolera, zgodnie z konwencjami REST. Potwierdź nazwy parametrów.

Oddzielne ładowanie nagłówka i stopki pozwala uniknąć powtarzania tego samego układu przy każdym wyświetleniu strony. Każda metoda ładuje wspólny nagłówek, konkretny widok treści, a następnie wspólną stopkę.

Podsumuj ten post następująco: