Übergeben von Parametern per Umleitung
-
12-11-2019 - |
Frage
Ist es möglich, Parameter per Umleitung zu übergeben?Ich habe viele Optionen ausprobiert, aber nichts scheint zu funktionieren.Mein neuester Ansatz ist:
return $this->redirect(array('Users::helloworld', 'args' => array('id' => 'myId')));
dann habe ich eine Route erstellt:
Router::connect('/Users/helloworld?id={:id}', array('controller' => 'Users', 'action' => 'helloworld'));
aber alles was ich bekomme ist users/helloworld/myId
Lösung
args
ist Teil der Routen und wird unter Verwendung der sehr generischen Route (nicht der von Ihnen erstellten und nicht benötigten) in eine URL konvertiert
Um eine zu bekommen Abfragezeichenfolge, verwenden Sie einfach die ?
Schlüssel:
return $this->redirect(array(
'Users::helloworld',
'?' => array('id' => $myId)
));
// will use the route:
// /{:controller}/{:action}/{:args}
// and generate
// /users/helloworld?id=$myId
Der Test dafür: https://github.com/UnionOfRAD/lithium/blob/master/tests/cases/net/http/RouteTest.php#L374-405
Andere Tipps
Anstatt eine separate Route zum Übergeben von Argumenten zu definieren, können Sie einfach Folgendes tun.Nehmen wir an, Sie möchten 2 Argumente übergeben: $arg1 & $arg2 zu den helloworld aktion Ihrer Internetnutzer Controller:
return $this->redirect(array(
'Users::helloworld',
'args' => array(
$arg1,
$arg2
)
));