Passando parâmetros via redirecionamento
-
12-11-2019 - |
Pergunta
É possível passar parâmetros via redirecionamento?Tentei várias opções, mas nada parece funcionar.Minha abordagem mais recente é:
return $this->redirect(array('Users::helloworld', 'args' => array('id' => 'myId')));
então criei uma rota:
Router::connect('/Users/helloworld?id={:id}', array('controller' => 'Users', 'action' => 'helloworld'));
mas tudo que consigo é users/helloworld/myId
Solução
args
faz parte das rotas e será convertida em uma URL usando a rota genérica (não aquela que você criou e não requer)
Para obter um string de consulta, basta usar o ?
chave:
return $this->redirect(array(
'Users::helloworld',
'?' => array('id' => $myId)
));
// will use the route:
// /{:controller}/{:action}/{:args}
// and generate
// /users/helloworld?id=$myId
O teste para isso: https://github.com/UnionOfRAD/lithium/blob/master/tests/cases/net/http/RouteTest.php#L374-405
Outras dicas
Em vez de definir uma rota separada para passar argumentos, você poderia simplesmente fazer o seguinte.Digamos que você queira passar 2 argumentos: $arg1 & $arg2 para o Olá Mundo ação de sua Usuários controlador:
return $this->redirect(array(
'Users::helloworld',
'args' => array(
$arg1,
$arg2
)
));
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow