CodeIgniter Routes: URL маршрутизиране с пример

Какво представляват маршрутите на CodeIgniter?

Маршрутите са отговорни за отговора на URL заявки. Маршрутизирането съпоставя URL адреса с предварително дефинираните маршрути. Ако не бъде намерено съвпадение на маршрут, CodeIgniter хвърля изключение за страница, която не е намерена.

Маршрутите в CodeIgniter се дефинират с помощта на формулата по-долу:

example.com/Controller/Method/Parameter/

ТУК,

  • Контролер - се съпоставя с името на контролера, който трябва да отговаря на URL адреса.
  • Метод – съпоставя се с метода в контролера, който трябва да отговори на URI заявката.
  • Параметър – този раздел не е задължителен.

Пример за маршрути на CodeIgniter

Нека сега да разгледаме практическото маршрутизиране на URL адреси CodeIgniter пример.

Помислете за следния URL адрес http://localhost:3000/contacts/edit/1

ТУК,

  • Името на контролера, отговарящ на горния URL адрес, е „контакти“
  • Методът в класа на контролера Contacts е „редактиране“
  • Методът за редактиране приема параметър. В случая на нашия пример стойността „1“ се предава на метода.

Ето кратка предистория на това, което планираме да направим:

  • Routing – маршрутизирането е отговорно за отговора на URL заявки. CodeIgniter Routing съпоставя URL адреса с предварително дефинираните маршрути. Ако не бъде намерено съвпадение на маршрута, тогава CodeIgniter хвърля изключение за страница, която не е намерена.
  • Контрольори – маршрутите са свързани с контролери. Контролерите залепват моделите и изгледите заедно. Искането за данни / бизнес логика от модела и връщане на резултатите чрез представяне на изгледи. След като URL бъде съпоставен с маршрут в CodeIgniter, той се препраща към публична функция на контролера, която взаимодейства с източника на данни, бизнес логиката и връща изгледа, който показва резултатите.
  • Прегледи – възгледите отговарят за представянето. Изгледът обикновено е комбинация от HTML, CSS и JavaСценарий. Това е частта, която отговаря за показването на уеб страницата на потребителя. Обикновено показаните данни обикновено се извличат от базата данни или други налични източници на данни.

За да научим как да внедряваме рутери в проект от реалния свят, ще приемем, че създаваме приложение за управление на данни за контакт. Следната таблица показва URL адресите, с които ще работите.

S / N URL Път Регулатор Начин на доставка
1 / $route['default_controller'] Добре дошли индекс
2 /Контакти $route['контакти'] Контакти индекс
3 /контакти/създай $route['create'] Контакти създаване на
4 /contacts/edit/id $route['edit/:id'] Контакти редактирам
5 /contacts/update/id $route['update/:id'] Контакти актуализация
6 /contacts/delete/id $route['delete/:id'] Контакти изтриване

Ние ще създадем маршрутите на нашето приложение въз основа на горната таблица. Дефинирахме URL адресите, маршрута на CodeIgniter и ги съпоставихме със съответните имена на контролери и методи.

Създаване на URL маршрутизиране за приложението

Нека създадем URL маршрутизиране на CodeIgniter за нашия учебен проект

Отворете application/config/routes.php

Променете маршрутите, за да съответстват на следното

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

ТУК,

  • $route['default_controller'] = 'добре дошли'; дефинира контролера по подразбиране Welcome.
  • $route['contacts'] = 'контакти'; дефинира маршрут за контакти, който извиква индексния метод в контролера за контакти
  • $route['create'] = 'контакти/създаване'; дефинира създаване на маршрут, който сочи към контролера за контакти и извиква метода за създаване.
  • $route['edit/:id'] = 'контакти/редактиране'; дефинира редактиране на маршрут, който приема параметър на id и сочи към метода за редактиране на контролера за контакти
  • $route['update/:id'] = 'контакти/актуализация'; дефинира актуализиране на маршрут, което приема параметър на id и сочи към метода за актуализиране на класа Contacts.
  • $route['delete/:id'] = 'контакти/изтриване'; дефинира маршрут за изтриване, който приема параметър на id и сочи към метода за изтриване на контролера за контакти.

Следната таблица показва съответните URL адреси, получени от дефинираните по-горе маршрути

S / N Път Съответстващ URL
1 $route['default_controller'] = 'добре дошли'; http://localhost:3000
2 $route['contacts'] = 'контакти'; http://localhost:3000/contacts
3 $route['create'] = 'контакти/създаване'; http://localhost:3000/contacts/create
4 $route['edit/:id'] = 'контакти/редактиране'; http://localhost:3000/contacts/edit/1
5 $route['update/:id'] = 'контакти/актуализация'; http://localhost:3000/contacts/update/1
6 $route['delete/:id'] = 'контакти/изтриване'; http://localhost:3000/contacts/delete/1

Сега, след като покрихме маршрутите, нека създадем контролера за контакти, който ще отговаря на действията, посочени в маршрутите.

Създайте нов файл Route в CodeIgniter като Contacts.php в application/controllers/Contacts.php

Добавете следния код

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

ТУК,

  • Class contacts extends CI_Controller {..} дефинира нашия клас контролер и разширява класа CI_Controller, който идва с CodeIgniter.
  • Методите, дефинирани по-горе, съответстват на маршрутите, които сме дефинирали, а тези с параметри като delete приемат параметър $id
  • Забележете, че функциите зареждат три (3) изгледа. Горният и долният колонтитул са общи за всички методи. Средният изглед е много специфичен за действието, т.е. изтриване за функция за изтриване, създаване на изглед за създаване на функция и т.н. Друго важно нещо, което трябва да запомните е, че изгледите се зареждат от поддиректорията с контакти.

Изгледи на CodeIgniter

Все още трябва да направим още една стъпка, преди да можем да тестваме нашите маршрути на CodeIgniter с параметри в уеб браузъра. Нека създадем съответните изгледи към горните методи на контролера.

Следното изображение показва как ще изглежда вашето приложение

Изгледи на CodeIgniter

Създайте следните файлове в приложение/изгледи

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

Създайте нова директория с контакти в приложението за изгледи/изгледи/контакти

Създайте следните файлове вътре

index.php
create.php
edit.php

Вашата файлова структура трябва да бъде както следва

Изгледи на CodeIgniter

Нека сега актуализираме 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>

ТУК,

  • Горният HTML код зарежда Burma CSS от CDN мрежа.

Следва кодът за footer.php

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

Нека сега добавим кода за файловете index.php, edit.php и create.php за контакти.

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>

Можете да запазите всички направени промени.

Отворете следния URL адрес във вашия уеб браузър http://localhost:3000/contacts/

можете да щракнете върху връзките Нов контакт и Редактиране на контакт и да видите какво се случва

Oбобщение

  • Маршрутите в CI са отговорни за отговарянето на URL заявки. Маршрутизирането съпоставя URL адреса с предварително дефинираните маршрути. Ако не бъде намерено съвпадение на маршрут на CodeIgniter, CodeIgniter хвърля изключение за страница, която не е намерена.
  • CI Routing отговаря за отговарянето на URL заявки. Маршрутизирането съпоставя URL адреса с предварително дефинираните маршрути.
  • Контролерите залепват моделите и изгледите заедно. Искането за данни / бизнес логика от модела и връщане на резултатите чрез представяне на изгледи.
  • Изгледите са отговорни за представянето. Изгледът обикновено е комбинация от HTML, CSS и JavaСценарий.
  • В този урок научихме как да създаваме маршрути в CodeIgniter за примерно приложение от реалния свят и покрихме основите на маршрутизирането, които трябва да знаете, за да започнете да разработвате CodeIgniter.

Обобщете тази публикация с: