CodeIgniter-controllere, visningsruting: Lær med eksempelapp

I denne tutorial skal du lære følgende emner.

  • Routing – routing er ansvarlig for at svare på URL-anmodninger. Routing matcher URL'en til de foruddefinerede ruter. Hvis der ikke findes nogen rutematch, kaster CodeIgniter en side ikke fundet en undtagelse.
  • Controllere – ruter er knyttet til controllere. Controllere limer modellerne og visningerne sammen. Anmodningen om data/forretningslogik fra modellen og returnere resultaterne i præsentationen af ​​visningen. Når en URL er blevet matchet til en rute, videresendes den til en controllers offentlige funktion. Denne funktion interagerer med datakilden, forretningslogikken og returnerer den visning, der viser resultaterne.
  • Views – synspunkter er ansvarlige for præsentation. En visning er normalt en kombination af HTML, CSS og JavaManuskript. Dette er den del, der er ansvarlig for at vise websiden til brugeren. Typisk hentes de viste data normalt fra databasen eller andre tilgængelige datakilder.

Sådan opretter du et nyt CodeIgniter-projekt

Vi vil bruge Composer til at oprette et nyt projekt. Jeg kommer til at bruge PHP indbygget server, så det er ikke nødvendigt at have ekstra software som f.eks Apache. I denne tutorial bruger vi Windows operativsystem. Derfor har vi oprettet en Sites-mappe på drev C. Du kan bruge enhver mappe, der passer til dig.

Åbn kommandolinjen/terminalen og kør følgende kommando

cd C:\Sites

Vi vil nu oprette et CodeIgniter-projekt ved hjælp af Composer. Kør følgende kommando

composer create-project CodeIgniter/framework ci-app

HER,

  • Ovenstående kommando opretter et nyt CodeIgniter-projekt version 3 ved hjælp af den seneste stabile udgivelse, dvs. 3.1.9, til en mappe ci-app.

Når ovenstående kommando er færdig med at køre, bør du kunne opnå resultater svarende til følgende i terminalen

Opret et nyt CodeIgniter-projekt

Kør følgende kommando for at gå til den nyoprettede projektmappe ci-app

cd ci-app

Lad os nu starte den indbyggede PHP-webserver

 php -S localhost:3000

HER,

  • Ovenstående kommando starter den indbyggede PHP-server, der kører på port 3000.

Åbn webbrowseren og gennemse følgende URL: http://localhost:3000/

Du får følgende side

Opret et nyt CodeIgniter-projekt

Hvis du kan se ovenstående side, så tillykke, du har med succes installeret CodeIgniter.

Som du kan læse fra ovenstående webside, er siden vist ovenfor gengivet af visningen placeret i application/views/welcome_message.php, og den ansvarlige controller er placeret i application/controllers/Welcome.php

CodeIgniter Routing

Indtil videre har vores applikation kun en enkelt URL, som er startsiden. I denne sektion vil vi tilpasse hjemmesektionen. Vi vil oprette nogle nye URL'er, som vil reagere på de forskellige anmodninger.

Lad os starte med startsidens rute

Åbn rutefilen som angivet af stien nedenfor

application/config/routes.php

Du bør kunne se følgende indhold

$route['default_controller'] = 'welcome';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;

HER,

  • $route['default_controller'] = 'velkommen'; definerer standardcontrolleren, der reagerer på URI-anmodningerne
  • $route['404_override'] = ”; denne rute giver dig mulighed for at definere en brugerdefineret rute for 404-fejl. En 404-fejl opstår, når en side ikke findes. CodeIgniter har en standardhandler for fejlen, men du kan definere din egen, hvis du ønsker det.
  • $route['translate_uri_dashes'] = FALSK; denne mulighed giver dig mulighed for at oversætte tankestreger til understregninger. Vi vil tale om denne mulighed, når vi ser på, hvordan ruter fungerer i CodeIgniter.

Lad os nu se på controllermetoden, der er ansvarlig for at vise hjemmesiden, som vi så, da vi åbnede URL'en http://localhost:3000/ i webbrowseren.

Åbn følgende fil

application/controllers/Welcome.php

Du burde kunne se følgende kode

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Welcome extends CI_Controller {

	public function index()
	{
		$this->load->view('welcome_message');
	}
}

HER,

  • Defineret ('BASEPATH') ELLER exit('Ingen direkte scriptadgang tilladt'); beskytter mod direkte adgang til controller-klassen uden at gå gennem filen index.php. Husk, i MVC-paradigmet har alle anmodninger et enkelt indgangspunkt, og for CodeIgniter er dets index.php. Denne kode blokerer alle anmodninger, der ikke kommer gennem index.php
  • klasse Welcome udvider CI_Controller {...} definerer en klasse Welcome, der udvider den overordnede klasse CI_Controller
  • public function index() definerer en offentlig funktion, der kaldes som standard, når du åbner hjemmesiden
  • $this->load->view('welcome_message'); denne linje indlæser visningen welcome_message. Filen welcome_message er placeret i mappen application/views/welcome_message.php

Indtil videre har vi kun undersøgt, hvad der kommer ud af kassen med CodeIgniter, lad os nu prøve at lave nogle ændringer. Vi opretter vores startside og erstatter standardsiden

Opret en ny fil i application/views/home.php

Tilføj følgende kode til home.php

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>Hello CodeIgniter!</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">
                    CodeIgniter Hello World
                </h1>
            </div>
        </section>
    </body>
</html>

HER,

Ovenstående HTML-kode indlæser Burma SSS-ramme og skrifttype fra CDN-netværket og skaber et meget grundlæggende HTML-dokument. Den anvender en meget enkel CSS-regel fra Burma CSS-ramme.

Åbn følgende URL i din browser: http://localhost:3000/

Du burde kunne se følgende

CodeIgniter Routing

Godt, vi har lige ændret hjemmesiden. Fortsæt, lad os definere vores rute. Lad os antage, at vores applikation også skal kunne vise siden om os.

Opret en rute

Åbn rutefilen application/config.routes.php

Tilføj følgende rute

$route['about-us'] = 'welcome/about_us';

HER,

  • Når en besøgende besøger URL'en /about-us, instruerer vi CodeIgniter om at lede efter en controller Velkommen og udføre metoden about_us.

Opret en controller

Lad os nu definere controller-metoden om os

Åbn applikation/controllere/Welcome.php

Tilføj følgende metode

public function about_us(){
            $this->load->view('about_us');
        }

HER,

  • Ovenstående kode definerer en funktion about_us og indlæser en visning about_us.

Opret en visning

Lad os nu skabe den visning, som vi lige refererede til i ovenstående afsnit

Opret en ny fil about_us.php i application/views/about_us.php

Tilføj følgende kode

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>About CodeIgniter!</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">
                    About us yap...                
                </h1>
            </div>
        </section>
    </body>
</html>

Vi er klar til at gå, åbn følgende URL i din webbrowser: http://localhost:3000/index.php/about-us

Du vil se den følgende side

Opret en visning i CodeIgniter

Hvis du er i stand til at se ovenstående side, så tillykke, du har med succes oprettet en simpel applikation i CodeIgniter.

Resumé

I denne tutorial dækkede vi tre (3) hovedkomponenter, der udgør en CodeIgniter-applikation. Vi så på ruter, og hvordan man definerer dem, controllere og hvordan man laver metoder, der reagerer på ruteanmodninger og skabte simple visninger, der returneres til brugerne, når de anmoder om en ressource.