statische pagina’ s¶
Opmerking: Deze handleiding gaat ervan uit dat u CodeIgniter hebt gedownload en het framework in uw ontwikkelomgeving hebt geïnstalleerd.
het eerste wat u gaat doen is het opzetten van een controller voor het handlestatic pagina ‘ s. Een controller is gewoon een klasse die helpt delegeren work.It is de lijm van uw webapplicatie.
bijvoorbeeld wanneer een oproep wordt gedaan naar:
We kunnen ons voorstellen dat er een controller is met de naam “nieuws”. De methode die op het nieuws wordt aangeroepen zou “laatste” zijn. De taak van de nieuwsmethode kan tograb 10 nieuwsitems zijn en ze op de pagina weergeven. Heel vaak in MVC,zie je URL patronen die overeenkomen met:
naarmate URL-schema ‘ s complexer worden, kan dit veranderen. Maar voor nu is dit alles wat we moeten weten.
Maak een bestand aan op application / controllers / Pages.php met de volgende code.
<?phpclass Pages extends CI_Controller { public function view($page = 'home') { }}
u hebt een klasse met de naam Pages
aangemaakt, met een weergavemethode die een argument met de naam $page
accepteert. De klasse Pages
breidt de klasseCI_Controller
uit. Dit betekent dat de klasse nieuwe pagina ‘ s toegang heeft tot de methoden en variabelen die zijn gedefinieerd in de klasse CI_Controller
(system/core/Controller.php).
de controller zal het centrum worden van elke aanvraag voor onze webapplicatie. In zeer technische CodeIgniter discussies, het misschien aangeduid als het super object. Zoals elke php klasse, refereer je naar het binnen je controllers als $this
. Refererend naar $this
is hoe u bibliotheken, weergaven en in het algemeen het framework zult Laden.
Nu u uw eerste methode hebt aangemaakt, is het tijd om enkele eenvoudige paginasjablonen te maken. We maken twee “weergaven” (paginasjablonen) die fungeren als onze voettekst en koptekst.
maak de header aan bij toepassing / weergaven / sjablonen / header.php en voeg de volgende code toe:
<html> <head> <title>CodeIgniter Tutorial</title> </head> <body> <h1><?php echo $title; ?></h1>
de header bevat de basis HTML-code die u wilt weergeven voordat u de hoofdweergave laadt, samen met een kop. Het zal ook de $title
variabele uitvoeren, die we later in de controller zullen definiëren.Maak nu een voettekst bij toepassing / weergaven / sjablonen / voettekst.php bevat de volgende code:
<em>© 2015</em> </body></html>
logica toevoegen aan de controller¶
eerder hebt u een controller ingesteld met een view()
methode. De methode accepteert één parameter, namelijk de naam van de pagina die geladen moet worden. De static paginasjablonen bevinden zich in de applicatie/views/pages/map.
maak in die map twee bestanden aan met de naam home.php en ongeveer.php.Binnen deze bestanden, typ wat tekst-alles wat je wilt − en sla ze op.Als je graag bijzonder on-origineel wilt zijn, probeer dan ” Hello World!”.
om deze pagina ‘ s te laden, moet u controleren of de opgevraagde pagina daadwerkelijk bestaat:
public function view($page = 'home'){ if ( ! file_exists(APPPATH.'views/pages/'.$page.'.php')) { // Whoops, we don't have a page for that! show_404(); } $data = ucfirst($page); // Capitalize the first letter $this->load->view('templates/header', $data); $this->load->view('pages/'.$page, $data); $this->load->view('templates/footer', $data);}
nu, wanneer de pagina bestaat, wordt geladen, met inbegrip van de header andfooter, en weergegeven aan de gebruiker. Als de pagina niet bestaat, wordt er een fout “404Page not found” weergegeven.
de eerste regel in deze methode controleert of de pagina daadwerkelijk bestaat.PHP ‘ s eigen file_exists()
functie wordt gebruikt om te controleren of het bestand is waar het verwacht wordt te zijn. show_404()
is een ingebouwde Codeigniterfunctie die de standaard foutpagina weergeeft.
In het headersjabloon werd de variabele $title
gebruikt om de paginatitel aan te passen. De waarde van titel wordt gedefinieerd in deze methode, maar in plaats van de waarde toe te wijzen aan een variabele, wordt deze toegewezen aan het titelelement in de $data
array.
het laatste wat moet worden gedaan is het laden van de weergaven in de volgorde waarin ze moeten worden weergegeven. De tweede parameter in de view()
methode wordt gebruikt om waarden door te geven aan de weergave. Elke waarde in de $data
array is toegewezen aan een variabele met de naam van de sleutel. Dus de waarde van$data
in de controller is gelijk aan $title
in de weergave.
Routing¶
de controller werkt nu! Wijs uw browser naarindex.php/pages/view
om uw pagina te zien. Wanneer uindex.php/pages/view/about
bezoekt, ziet u de pagina over, inclusief de kop-en voettekst.
met behulp van aangepaste routeringsregels hebt u de mogelijkheid om elke URI toe te wijzen aan elke controller en methode, en zich te bevrijden van de normale conventie:http://example.com///
laten we dat doen. Open het routeringsbestand bijapplication / config / routes.php en voeg de volgende twee regels toe.Verwijder alle andere code die een element in de $route
array instelt.
$route = 'pages/view';$route = 'pages/view/';
CodeIgniter leest zijn routeringsregels van boven naar beneden en stuurt de vraag naar de eerste overeenkomende regel. Elke regel is een reguliere expressie (links) toegewezen aan een controller en method naam gescheiden door schuine strepen(rechts). Wanneer een verzoek binnenkomt, zoekt CodeIgniter naar de eerste match, en roept de juiste controller en methode aan, eventueel witharguments.
meer informatie over routering is te vinden in de URI Routingdocumentation.
Hier komt de tweede regel in de $route
array overeen met elk verzoek met behulp van de jokertekst (:any)
. en geeft de parameter door aan de view()
methode van de Pages
klasse.
bezoek nu index.php/about
. Is het correct gerouteerd naar de view()
methode in de pages controller? Geweldig!