# 2, Routing *In deze les leer je wat routing is en hoe je binnen Yii de routing kunt instellen.* ### Wat is routing? (Algemeen) Routing is de manier waarop de webserver en jouw programma weet welke pagina er moet worden getoond. Kijk maar eens goed naar de URL in je browser. Je kunt de URL opdelen in 5 stukjes: [![image-1594292626981.png](https://www.roc.ovh/uploads/images/gallery/2020-07/scaled-1680-/image-1594292626981.png)](https://www.roc.ovh/uploads/images/gallery/2020-07/image-1594292626981.png)
OnderdeelWat is het?Uitleg
Schemeprotocolhoe wordt de informatie verzonden (http, https, ftp, smb, file, ...)
domain namedomeindomein verwijst naar een server of een groep servers.
file pathpathverijst naar de file die de webserver moet 'uitvoeren'
parametersvariabelenhiermee kun je informatie naar de webserver sturen.
anchorverwijzing binnen de paginahiermee kun je naar een onderdeel van de pagina springen. Voorbeeld: https://www.roc.ovh/link/302#bkmrk-nog-een-keer-in-sche
Het schema bepaald hoe de informatie wordt opgevraagd (bij een webserver is dit meestal http en https). De domain name is de naam van de server(s). Het file path verteld de server welke informatie er moet worden getoond. De parameters zijn variabele die mee kunnen worden gegeven bijvoorbeeld om waarden die een gebruiker heeft ingevoerd naar de webserver te sturen. Tot slotte is het anchor (weinig gebruikt) een verwijzing naar een stukje binnen een pagina. Normaal gesproken komt het file path overeen met de locatie van de bestanden op de server. Het file path is het path vanaf de document root. Stel de document root staat op jouw laptop naar: c:\\www Je hebt XAMPP opgestart en je gaat naar: [http://localhost/opgave1/uitslag/index.php](http://localhost/opgave1/uitslag/index.php) Dan wordt de file c:\\www\\opgave1\\uitslag\\index.php door de webserver uitgevoerd. Het file path wordt dus achter de *document root* geplaatst #### Hoe kom je van de URL in je browser naar de file op jouw laptop? [![image-1613336806883.png](https://www.roc.ovh/uploads/images/gallery/2021-02/scaled-1680-/image-1613336806883.png)](https://www.roc.ovh/uploads/images/gallery/2021-02/image-1613336806883.png) Met routing zorg je ervoor dat je ergens een vertaling wordt gemaakt tussen het URL en de file PHP die moet worden uitgevoerd. Alles wat hierboven is beschreven is de *standaard* routing. Zo werkt het op jouw laptop als je plain PHP gebruikt (dat is PHP zonder framework). Routing zorgt ervoor dat het path en eventueel de parameters de juiste code uitvoeren. Bij eenvoudige web applicaties is het path gewoon de locatie van de file op de harddisk, maar voor meer ingewikkelde programma's kan dat al snel onoverzichtelijk worden. Met een framework werkt het daarom anders. ### Routing in Yii Standaard hoef je niets te doen voor routing. Er zit al heel veel voorgebakken in Yii. Stel je typt in je browser in localhost:8080/country/index Dit path bestaat uit twee delen; country en index. country verwijst naar controllers/CountryController en index verwijst naar de public function actionIndex in de class CountryController. Het path bestaat in Yii uit twee delen, de verwijzing naar de controller en de verwijzing naar de functie/method. De vertaling van path naar controller en function/method gaat als volgt: 1. het eerste deel van het path is de controller-naam, maar 1. de controller-naam begint altijd met een hoofdletter, en; 2. als er een streepje (-) in het path staat dan is dat een nieuw woord en in de controller begint dit nieuwe woord met een hoofdletter. Voorbeeld: dit-is-het-eerste-deel wordt DitIsHetEersteDeel 2. Het tweede deel van het path wordt opdezelfde manier vertaald maar er wordt ook nog eens het woord action voorgezet. Voorbeeld: dit-is-het-tweede-deel wordt actionDitIsHetTweedeDeel ##### Een paar voorbeelden:
pathfilepublic function
/kaart/overzichtKaartControlleractionOverzicht
/klas-lokaal/overzichtklasLokaalControlleractionOverzicht
/klas-lokaal/stoel-maatklasLokaalControlleractionStoelMaat
/klas-lokaal/indexklasLokaalControlleractionIndex
/klas-lokaalklasLokaalControlleractionIndex
Zoals is te zien in de laatste regel, wordt de actionIndex uitgevoerd als het tweede deel van het path ontbreekt. ### Oefening We gaan in onze World-applicatie oefenen met routing (1) Zet in de CountryController in de CountryController class een nieuwe public function: ``` public function actionHello() { echo "Hello World!"; exit; } ``` **Opdracht:** Save de aangepaste CountryController en bedenk met welke url je nu deze nieuwe functie (method) moet aanroepen. Controleer dat, zodat je in jouw browser het volgende ziet: [![image-1594296881002.png](https://www.roc.ovh/uploads/images/gallery/2020-07/scaled-1680-/image-1594296881002.png)](https://www.roc.ovh/uploads/images/gallery/2020-07/image-1594296881002.png) (2) Maak een nieuwe file **controllers/ExampleController.php** en zet daar het volgende in. ```PHP