Parametrit reiteissä MVC:ssä PHP:ssä
Edellisessä oppitunnissa reittimme olivat kiinteitä osoitteita. Todellisuudessa reititysmekanismi on monimutkaisempi - voit tehdä niin, että osa sivun URI:sta päätyy nimettyihin parametreihin, jotka ovat sitten saatavilla ohjaimessa.
Oletetaan esimerkiksi, että osoitteemme näyttävät
tältä: /test/param1/param2/,
missä param1 ja param2 ovat mielivaltaisia
merkkijonoja. Samalla haluamme, että tällaiset
osoitteet käsitellään yhdellä ohjaimen toiminnolla.
Tätä varten tulee keksiä parametrin nimi
ja laittaa kaksoispiste sen eteen, näin:
<?php
use \Core\Route;
return [
new Route('/test/:var1/:var2/', 'page', 'act'),
];
?>
Meidän tapauksessamme käy niin, että kaikki
muotoa /test/parametri1/parametri2/ olevat pyynnöt
päätyvät toimintoon act. Samalla
tämän toiminnon ensimmäiseen parametriin tulee
assosiatiivinen taulukko parametreista:
teksti, joka on ensimmäisen parametrin paikalla,
päätyy taulukon elementtiin, jonka avain on 'var1',
ja toisen parametrin teksti - avaimeen 'var2'.
Oletetaan esimerkiksi, että osoiteriville on kirjoitettu
seuraava: /test/eee/bbb/. Katsotaan,
mitä toiminnon ensimmäinen parametri sisältää:
<?php
namespace Project\Controllers;
use Core\Controller;
class PageController extends Controller
{
public function act($params)
{
var_dump($params); // ['var1' => 'eee', 'var2' => 'bbb']
}
}
?>
Tee ohjain NumController,
ja siihen - toiminto sum. Tee niin, että tämä
toiminto käsittelee seuraavan muotoisia osoitteita:
/nums/:n1/:n2/:n3/, missä parametrit
ovat joitain numeroita. Tee niin, että
ruudulle tulostetaan annettujen numeroiden summa.