Parámetros en rutas en MVC en PHP
En la lección anterior nuestras rutas tenían direcciones fijas. En realidad, el mecanismo de enrutamiento es más complejo: se puede hacer que parte de la URI de la página caiga en parámetros nombrados, accesibles luego en el controlador.
Supongamos, por ejemplo, que nuestras direcciones se vean
así: /test/param1/param2/,
donde param1 y param2 son cadenas
arbitrarias. Al mismo tiempo, queremos que las direcciones de este
tipo sean manejadas por una misma acción del controlador.
Para ello, se debe inventar un nombre para el parámetro
y colocar dos puntos antes del mismo, así:
<?php
use \Core\Route;
return [
new Route('/test/:var1/:var2/', 'page', 'act'),
];
?>
En nuestro caso, resultará que todas las peticiones
del tipo /test/parámetro1/parámetro2/
llegarán a la acción act. Al mismo
tiempo, al primer parámetro de esta acción le llegará
un array asociativo con los parámetros:
el texto que esté en lugar del primer parámetro,
caerá en el elemento del array con la clave 'var1',
y el texto del segundo parámetro - en 'var2'.
Supongamos, por ejemplo, que en la barra de direcciones se ingresa
lo siguiente: /test/eee/bbb/. Veamos
què contendrá el primer parámetro de la acción:
<?php
namespace Project\Controllers;
use Core\Controller;
class PageController extends Controller
{
public function act($params)
{
var_dump($params); // ['var1' => 'eee', 'var2' => 'bbb']
}
}
?>
Cree el controlador NumController,
y en él - la acción sum. Que esta
acción maneje direcciones del siguiente tipo:
/nums/:n1/:n2/:n3/, donde los parámetros
serán algunos números. Haga que en la pantalla se muestre la suma de los números transmitidos.