Parâmetros em rotas no MVC em PHP
Na lição anterior, nossas rotas tinham endereços fixos. Na verdade, o mecanismo de roteamento é mais complexo - é possível fazer com que parte do URI da página caia em parâmetros nomeados, disponíveis posteriormente no controlador.
Suponha, por exemplo, que nossos endereços fiquem
assim: /test/param1/param2/,
onde param1 e param2 são strings
arbitrárias. Ao mesmo tempo, queremos que endereços desse
tipo sejam tratados por uma ação do controlador.
Para isso, devemos inventar um nome para o parâmetro
e colocar dois pontos antes dele, assim:
<?php
use \Core\Route;
return [
new Route('/test/:var1/:var2/', 'page', 'act'),
];
?>
No nosso caso, resultará que todas as requisições
do tipo /test/parametro1/parametro2/
irão para a ação act. Ao mesmo
tempo, o primeiro parâmetro desta ação receberá
um array associativo com os parâmetros:
o texto que estiver no lugar do primeiro parâmetro
irá para o elemento do array com a chave 'var1',
e o texto do segundo parâmetro - para 'var2'.
Suponha, por exemplo, que o seguinte foi digitado
na barra de endereços: /test/eee/bbb/. Vamos
ver o que o primeiro parâmetro da ação irá conter:
<?php
namespace Project\Controllers;
use Core\Controller;
class PageController extends Controller
{
public function act($params)
{
var_dump($params); // ['var1' => 'eee', 'var2' => 'bbb']
}
}
?>
Crie um controlador NumController,
e nele - uma ação sum. Deixe esta
ação processar endereços do seguinte tipo:
/nums/:n1/:n2/:n3/, onde os parâmetros
serão alguns números. Faça com que
a soma dos números transmitidos seja exibida na tela.