Parametrar i rutter i MVC i PHP
I föregående lektion hade våra rutter fasta adresser. Egentligen är routningsmekanismen mer komplex - det går att göra så att en del av sidans URI hamnar i namngivna parametrar, som sedan är tillgängliga i kontrollern.
Låt oss säga att våra adresser ska se ut
så här: /test/param1/param2/,
där param1 och param2 är godtyckliga
strängar. Samtidigt vill vi att adresser av denna
typ ska hanteras av en kontrolleråtgärd.
För att göra detta bör du komma på ett parameternamn
och sätta ett kolon före det, så här:
<?php
use \Core\Route;
return [
new Route('/test/:var1/:var2/', 'page', 'act'),
];
?>
I vårt fall kommer det att bli så att alla förfrågningar
av typen /test/parameter1/parameter2/
kommer att hamna på åtgärden act. Samtidigt
kommer den första parametern för denna åtgärd att
innehålla en associativ array med parametrar:
texten som kommer att vara på den första parameterns plats,
hamnar i arrayelementet med nyckeln 'var1',
och texten för den andra parametern - i 'var2'.
Låt oss säga att följande har skrivits in
i adressfältet: /test/eee/bbb/. Låt oss
se vad den första parametern för åtgärden
kommer att innehålla:
<?php
namespace Project\Controllers;
use Core\Controller;
class PageController extends Controller
{
public function act($params)
{
var_dump($params); // ['var1' => 'eee', 'var2' => 'bbb']
}
}
?>
Skapa kontrollern NumController,
och i den - åtgärden sum. Låt denna
åtgärd hantera adresser av följande typ:
/nums/:n1/:n2/:n3/, där parametrarna
kommer att vara vissa nummer. Gör så att
summan av de överförda talen skrivs ut på skärmen.