Paso de parámetros a través de redirección
-
12-11-2019 - |
Pregunta
Es posible pasar parámetros a través de redirección?He intentado un montón de opciones, pero nada parece funcionar.Mi último enfoque es el siguiente:
return $this->redirect(array('Users::helloworld', 'args' => array('id' => 'myId')));
a continuación, he creado una ruta:
Router::connect('/Users/helloworld?id={:id}', array('controller' => 'Users', 'action' => 'helloworld'));
pero todo lo que veo es users/helloworld/myId
Solución
args
es parte de las rutas y se convertirá en una URL usando el genérico de la ruta (no la que usted ha creado y no requieren)
Para obtener una cadena de consulta, simplemente utilice el ?
clave:
return $this->redirect(array(
'Users::helloworld',
'?' => array('id' => $myId)
));
// will use the route:
// /{:controller}/{:action}/{:args}
// and generate
// /users/helloworld?id=$myId
La prueba de que: https://github.com/UnionOfRAD/lithium/blob/master/tests/cases/net/http/RouteTest.php#L374-405
Otros consejos
En lugar de definir una ruta separada para pasar los argumentos, podría simplemente hacer lo siguiente.
Digamos que desee pasar 2 argumentos: $ arg1 & $ arg2 a la acción showorld de su controlador :
return $this->redirect(array(
'Users::helloworld',
'args' => array(
$arg1,
$arg2
)
));