Parameters in routes in MVC in PHP
In de vorige les hadden onze routes vaste adressen. Eigenlijk is het routeringsmechanisme complexer - het is mogelijk om ervoor te zorgen dat een deel van de URI van de pagina in genaamde parameters terechtkomt, die vervolgens beschikbaar zijn in de controller.
Stel dat onze adressen er als volgt uit
zouden zien: /test/param1/param2/,
waar param1 en param2 willekeurige
strings zijn. Tegelijkertijd willen we dat adressen van dit
type worden afgehandeld door één controlleractie.
Hiervoor moet je een parameternaam bedenken
en er een dubbele punt voor zetten, zoals dit:
<?php
use \Core\Route;
return [
new Route('/test/:var1/:var2/', 'page', 'act'),
];
?>
In ons geval betekent dit dat alle verzoeken
van het type /test/parameter1/parameter2/
worden doorgeleid naar de actie act. Hierbij
zal de eerste parameter van deze actie
een associatieve array met parameters bevatten:
de tekst die op de plaats van de eerste parameter staat,
komt terecht in het array-element met de sleutel 'var1',
en de tekst van de tweede parameter - in 'var2'.
Stel dat het volgende in de adresbalk is getypt:
/test/eee/bbb/. Laten we
kijken wat de eerste parameter
van de actie zal bevatten:
<?php
namespace Project\Controllers;
use Core\Controller;
class PageController extends Controller
{
public function act($params)
{
var_dump($params); // ['var1' => 'eee', 'var2' => 'bbb']
}
}
?>
Maak een controller NumController,
en daarin - de actie sum. Laat deze
actie adressen van het volgende type verwerken:
/nums/:n1/:n2/:n3/, waar de parameters
enkele getallen zijn. Zorg ervoor dat
de som van de doorgegeven getallen op het scherm wordt weergegeven.