CodePutovi paljenja: URL Rutiranje s primjerom

โšก Pametni saลพetak

Codeupaljaฤ URL Karte usmjeravanja a URL kontroleru i metodi, s opcionalnim parametrom. Rute su definirane u routes.php, tako da je ฤist URL Kao i contacts/edit/1, pokreฤ‡e se metoda edit kontrolera Contacts, koja uฤitava prikaze zaglavlja, sadrลพaja i podnoลพja.

  • ๐Ÿงญ Osnovno pravilo: Ruta odgovara URL na kontroler, metodu i opcionalni parametar.
  • ๐Ÿ“ formula: Uzorak je Kontroler/Metoda/Parametar, definiran u application/config/routes.php.
  • ???? Zadana ruta: default_controller postavlja poฤetnu stranicu kada ne URL segment je zadan.
  • ๐Ÿ”ข Parametri: Ruta kao ลกto je edit/:id prosljeฤ‘uje vrijednost id-a u metodu kontrolera.
  • ๐ŸŽ›๏ธ kontroler: Svaka ruta se preslikava na metodu koja uฤitava odgovarajuฤ‡e prikaze.
  • ๐Ÿ–ผ๏ธ Dijeljeni prikazi: Prikazi zaglavlja i podnoลพja se ponovno koriste, s odreฤ‘enim srednjim prikazom za svaku radnju.
  • โ“ 404 Rukovanje: Neusporedivo URL izaziva iznimku "stranica nije pronaฤ‘ena", koju je moguฤ‡e poniลกtiti s 404_override.

CodePutovi paljenja

ล to su CodePutovi paljenja?

Rute su odgovorne za odgovaranje na URL zahtjevi. Usmjeravanje odgovara URL na unaprijed definirane rute. Ako se ne pronaฤ‘e odgovarajuฤ‡a ruta, CodeIgniter baca iznimku "stranica nije pronaฤ‘ena".

Rute u CodeUpaljaฤ se definira pomoฤ‡u sljedeฤ‡e formule:

example.com/Controller/Method/Parameter/

Ovdje:

  • Kontroler je mapiran na naziv kontrolera koji bi trebao odgovoriti na URL.
  • Metoda je mapirana na metodu u kontroleru koja bi trebala odgovoriti na URI zahtjev.
  • Parametar โ€“ ovaj odjeljak nije obavezan.

CodePrimjer ruta paljenja

Pogledajmo sada praktiฤni primjer URL usmjeravanje u Codeupaljaฤ primjer. Razmotrite sljedeฤ‡e URL: http://localhost:3000/contacts/edit/1

Ovdje:

  • Ime kontrolora koji odgovara na gore navedeno URL su โ€žkontaktiโ€œ.
  • Metoda u klasi kontrolera Contacts je "edit" (uredi).
  • Metoda ureฤ‘ivanja prihvaฤ‡a parametar. U naลกem primjeru, metodi se prosljeฤ‘uje vrijednost "1".

Evo kratke pozadine onoga ลกto planiramo uฤiniti:

  • Usmjeravanje โ€“ usmjeravanje odgovara na URL zahtjevi. CodeUsmjeravanje upaljaฤa odgovara URL na unaprijed definirane rute. Ako se ne pronaฤ‘e odgovarajuฤ‡a ruta, CodeIgniter baca iznimku "stranica nije pronaฤ‘ena".
  • Kontroleri โ€“ rute su povezane s kontrolerima. Kontroleri povezuju modele i prikaze. Oni zahtijevaju podatke i poslovnu logiku od modela i vraฤ‡aju rezultate putem prezentacije prikaza. Nakon URL je usklaฤ‘en s rutom, prosljeฤ‘uje se javnoj funkciji kontrolera koja komunicira s izvorom podataka i poslovnom logikom te vraฤ‡a prikaz.
  • Posjeta โ€“ pogledi su odgovorni za prezentaciju. Pogled je obiฤno kombinacija HTML-a, CSS-a i JavaScriptOvaj dio je odgovoran za prikaz web stranice korisniku. Prikazani podaci obiฤno se dohvaฤ‡aju iz baze podataka ili drugog izvora podataka.

Kako bismo nauฤili kako implementirati rute u stvarnom projektu, pretpostavljamo da izraฤ‘ujemo aplikaciju za upravljanje kontaktnim podacima. Sljedeฤ‡a tablica prikazuje URLs kojima ฤ‡emo raditi.

S / N URL Ruta kontrolor naฤin
1 / $route['default_controller'] Dobrodoลกli indeks
2 /kontakti $route['contacts'] Kontakti indeks
3 /kontakti/kreiraj $route['create'] Kontakti stvoriti
4 /contacts/edit/id $route['edit/:id'] Kontakti uredi
5 /kontakti/aลพuriranje/id $route['update/:id'] Kontakti aลพuriranje
6 /contacts/delete/id $route['delete/:id'] Kontakti izbrisati

Rute naลกe aplikacije kreirat ฤ‡emo na temelju gornje tablice. Definirali smo URLs, the CodeRutu Ignitera i mapirala ih na odgovarajuฤ‡e nazive kontrolera i metoda.

Stvaranje URL Usmjeravanje za aplikaciju

Stvorimo Codeupaljaฤ URL usmjeravanje za naลก tutorijal. Otvorite application/config/routes.php i izmijenite rute kako bi odgovarale sljedeฤ‡em:

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

Ovdje:

  • $route['default_controller'] = 'dobrodoลกli'; definira zadani kontroler Welcome.
  • $route['contacts'] = 'contacts'; definira rutu kontakata koja poziva metodu index u kontroleru kontakata.
  • $route['create'] = 'contacts/create'; definira metodu create rute koja pokazuje na kontroler kontakata i poziva metodu create.
  • $route['edit/:id'] = 'contacts/edit'; definira ureฤ‘ivanje rute koje prihvaฤ‡a parametar id i pokazuje na metodu ureฤ‘ivanja kontrolera kontakata.
  • $route['update/:id'] = 'contacts/update'; definira aลพuriranje rute koje prihvaฤ‡a parametar id i pokazuje na metodu aลพuriranja klase Contacts.
  • $route['delete/:id'] = 'contacts/delete'; definira rutu za brisanje koja prihvaฤ‡a parametar id i pokazuje na metodu brisanja kontrolera kontakata.

Sljedeฤ‡a tablica prikazuje odgovarajuฤ‡e URLizvedene iz gore definiranih ruta:

S / N Ruta Odgovara URL
1 $route['default_controller'] = 'dobrodoลกli'; http://localhost:3000
2 $route['contacts'] = 'kontakti'; http://localhost:3000/contacts
3 $route['create'] = 'kontakti/stvori'; http://localhost:3000/contacts/create
4 $route['edit/:id'] = 'kontakti/uredi'; http://localhost:3000/contacts/edit/1
5 $route['update/:id'] = 'kontakti/aลพuriranje'; http://localhost:3000/contacts/update/1
6 $route['delete/:id'] = 'kontakti/brisanje'; http://localhost:3000/contacts/delete/1

Sada kada smo obradili rute, kreirajmo kontroler kontakata koji ฤ‡e odgovarati na radnje navedene u rutama. Izradite novu datoteku Contacts.php u application/controllers/Contacts.php i dodajte sljedeฤ‡i 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');
}
}

Ovdje:

  • class Contacts extends CI_Controller {โ€ฆ} definira naลกu klasu kontrolera i proลกiruje klasu CI_Controller koja dolazi s CodeUpaljaฤ.
  • Metode definirane gore odgovaraju rutama koje smo definirali, a one s parametrima poput delete prihvaฤ‡aju parametar $id.
  • Primijetite da funkcije uฤitavaju tri prikaza. Zaglavlje i podnoลพje zajedniฤki su za sve metode. Srednji prikaz specifiฤan je za radnju, tj. delete za funkciju brisanja i create za funkciju stvaranja. Joลก jedna vaลพna stvar koju treba zapamtiti je da se prikazi uฤitavaju iz poddirektorija kontakata.

CodePogledi zapaljivaฤa

Joลก nam je potreban jedan korak prije nego ลกto moลพemo testirati naลกe CodeRute paljenja s parametrima u web pregledniku. Izradimo prikaze koji odgovaraju gore navedenim metodama kontrolera. Sljedeฤ‡a slika prikazuje kako ฤ‡e aplikacija izgledati:

CodePregled aplikacije Igniter contacts

U application/views kreirajte sljedeฤ‡e datoteke:

header.php โ€“ this file will contain the contacts app menu and the header
footer.php โ€“ this file will contain the application footer

Napravite novi direktorij kontakata unutar aplikacije/pogledi (application/views/contacts) i unutar njega stvorite sljedeฤ‡e datoteke:

index.php
create.php
edit.php

Struktura vaลกe datoteke trebala bi biti sljedeฤ‡a:

CodeStruktura datoteke pregleda Ignitera

Sada aลพurirajmo datoteku 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>

Ovdje:

  • Gornji HTML kod uฤitava Bulma CSS s CDN-a.

Slijedeฤ‡i je kod za datoteku footer.php:

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

Dodajmo sada kod za datoteke index.php, edit.php i create.php za kontakte:

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ลพete spremiti sve napravljene promjene. Otvorite sljedeฤ‡e URL u vaลกem web pregledniku: http://localhost:3000/contacts/Moลพete kliknuti na poveznice Novi kontakt i Uredi kontakt i vidjeti ลกto se dogaฤ‘a.

Pitanja i odgovori

Definirajte rutu pomoฤ‡u rezerviranog mjesta kao ลกto je edit/:id i prihvatite odgovarajuฤ‡i argument u metodi kontrolera, na primjer edit($id). CodeUpaljaฤ prolazi URL segment u taj argument.

CodeIgniter izbacuje iznimku "stranica nije pronaฤ‘ena" i prikazuje stranicu 404. Moลพete usmjeriti 404_override na vlastiti kontroler da biste umjesto toga prikazali prilagoฤ‘enu stranicu s pogreลกkom.

site_url() izraฤ‘uje potpuni URL iz vaลกeg base_url-a i rute, tako da poveznice nastave raditi ako se web-mjesto premjesti ili se promijeni osnovna putanja. Potrebno je URL pomoฤ‡nik koji se prvo uฤitava.

Da. Iz naziva resursa poput kontakata, umjetna inteligencija moลพe generirati indeks, stvarati, ureฤ‘ivati, aลพurirati i brisati rute s odgovarajuฤ‡im metodama kontrolera, slijedeฤ‡i REST konvencije. Potvrdite nazive parametara.

Odvojenim uฤitavanjem zaglavlja i podnoลพja izbjegava se ponavljanje istog izgleda u svakom prikazu stranice. Svaka metoda uฤitava dijeljeno zaglavlje, odreฤ‘eni prikaz sadrลพaja, a zatim dijeljeno podnoลพje.

Saลพmite ovu objavu uz: