Yii2 - createUrl() mit array params?
Entsprechend der Yii2 Dokumentation , soll ich Gebäude die URL wie folgt aus:
$appUrl = Yii::$app->urlManager->createUrl([Yii::$app->controller->id . '/' . Yii::$app->controller->action->id,'p1' => 'v1','p2' => 'v2'] , null);
It-Ausgänge:
/index.php?r=Benutzer%2Findex&p1=v1&p2=v2
Welche ist die richtige Ausgabe. Nun, was ist, wenn ich ein array params, dass ich direkt weitergeben wollen, um die createUrl()
Methode? Der folgende code erläutert mein problem:
$arrayParams = ['p1' => 'v1' , 'p2' => 'v2'];
$appUrl = Yii::$app->urlManager->createUrl([Yii::$app->controller->id . '/' . Yii::$app->controller->action->id,$arrayParams] , null);
Die Ausgabe in diesem Fall:
/index.php?r=users/index&1[p1]=v1&1[p2] v2=
In der Erwägung, dass die Ausgabe sollte sein:
index.php?r=users/index&p1=v1&p2=v2
Bitte beachten Sie, dass $arrayParams
erzeugt wird, durch eine andere Methode, und ich kann nicht extrahiert alle Schlüssel und Werte, und geben Sie Sie nacheinander in createUrl()
. Das wäre sehr teuer IMO. Wie kann ich erreichen, das mit Yii ' s api?
- Für nur einen parameter:
<?= Yii::$app->urlManager->createUrl(["post/view","id"=>$post->id]) ?>
- Es ist gut
Url::to()
stattYii::$app->urlManager->createUrl()
- Ich bin damit einverstanden. Ich war relativ neu in Yii 2, wenn ich fragte diese. Ich hatte keine Ahnung, dass wir Url::to () - Methode zur Verfügung damals. Es ist kurz, und nicht mit dem $ - app, die ich mag.
- Es ist für andere Menschen, die finden es. Denn ich war auf der Suche für diese Verknüpfung, wenn Sie hier kommen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
array_merge
zum erstellen der erforderlichen array-Struktur.Gleiche Ergebnis erzielen Sie mit
Yii::$app->controller->route