Parametri nei route in MVC in PHP
Nella lezione precedente i nostri route avevano indirizzi fissi. In realtà il meccanismo di routing è più complesso - è possibile fare in modo che una parte dell'URI della pagina vada in parametri nominati, successivamente accessibili nel controller.
Supponiamo, ad esempio, che i nostri indirizzi abbiano
questo aspetto: /test/param1/param2/,
dove param1 e param2 sono stringhe
arbitrarie. In questo caso vogliamo che gli indirizzi di questo
tipo siano gestiti da un'unica azione del controller.
Per fare ciò, bisogna inventare un nome per il parametro
e mettere due punti prima di esso, in questo modo:
<?php
use \Core\Route;
return [
new Route('/test/:var1/:var2/', 'page', 'act'),
];
?>
Nel nostro caso, risulterà che tutte le richieste
del tipo /test/parametro1/parametro2/
andranno all'azione act. Inoltre, nel
primo parametro di questa azione verrà passato
un array associativo con i parametri:
il testo che sarà al posto del primo parametro
andrà nell'elemento dell'array con la chiave 'var1',
e il testo del secondo parametro - in 'var2'.
Supponiamo, ad esempio, che nella barra degli indirizzi sia digitato
quanto segue: /test/eee/bbb/. Vediamo
cosa conterrà il primo parametro dell'azione:
<?php
namespace Project\Controllers;
use Core\Controller;
class PageController extends Controller
{
public function act($params)
{
var_dump($params); // ['var1' => 'eee', 'var2' => 'bbb']
}
}
?>
Crea un controller NumController,
e in esso - un'azione sum. Lascia che questa
azione gestisca indirizzi del seguente tipo:
/nums/:n1/:n2/:n3/, dove i parametri
saranno alcuni numeri. Fai in modo che
venga visualizzata a schermo la somma dei numeri passati.