Paramètres dans les routes en MVC en PHP
Dans la leçon précédente, nos routes avaient des adresses fixes. En réalité, le mécanisme de routage est plus complexe - il est possible de faire en sorte qu'une partie de l'URI de la page arrive dans des paramètres nommés, accessibles ensuite dans le contrôleur.
Supposons, par exemple, que nos adresses ressemblent
à ceci : /test/param1/param2/,
où param1 et param2 sont des chaînes
arbitraires. En même temps, nous voulons que les adresses de ce
type soient traitées par une seule action du contrôleur.
Pour cela, il faut inventer un nom de paramètre
et mettre un deux-points devant, comme ceci :
<?php
use \Core\Route;
return [
new Route('/test/:var1/:var2/', 'page', 'act'),
];
?>
Dans notre cas, il en résultera que toutes les requêtes
de type /test/paramètre1/paramètre2/
arriveront sur l'action act. Par
ailleurs, le premier paramètre de cette action recevra
un tableau associatif avec les paramètres :
le texte qui sera à la place du premier paramètre
arrivera dans l'élément du tableau avec la clé 'var1',
et le texte du deuxième paramètre - dans 'var2'.
Supposons, par exemple, que la barre d'adresse contienne
ce qui suit : /test/eee/bbb/. Voyons
ce que contiendra le premier paramètre
de l'action :
<?php
namespace Project\Controllers;
use Core\Controller;
class PageController extends Controller
{
public function act($params)
{
var_dump($params); // ['var1' => 'eee', 'var2' => 'bbb']
}
}
?>
Créez le contrôleur NumController,
et dedans - l'action sum. Que cette
action traite les adresses de type suivant :
/nums/:n1/:n2/:n3/, où les paramètres
seront des nombres. Faites en sorte
que la somme des nombres transmis s'affiche à l'écran.