Согласно Yii2 documentation, я должен быть строить URL, как следующие:Yii2 - createUrl() с массивом параметров?
$appUrl = Yii::$app->urlManager->createUrl([Yii::$app->controller->id . '/' . Yii::$app->controller->action->id,'p1' => 'v1','p2' => 'v2'] , null);
Он выводит:
/index.php?r=users%2Findex & p1 = v1 & p2 = v2
Какой правильный выход. Теперь, что, если у меня есть массив параметров, которые я прямо хочу передать методу createUrl()
? Следующий код объясняет мою проблему:
$arrayParams = ['p1' => 'v1' , 'p2' => 'v2'];
$appUrl = Yii::$app->urlManager->createUrl([Yii::$app->controller->id . '/' . Yii::$app->controller->action->id,$arrayParams] , null);
Выход в этом случае:
/index.php?r=users/index & 1 [p1] = v1 & 1 [p2] = v2
В то время как выход должен быть:
index.php г = пользователей/индекс & p1 = v1 & p2 = v2
Пожалуйста, обратите внимание, что $arrayParams
порождается другим способом, и я не могу извлечь все ключи и значения и передать их по одному в createUrl()
. Это будет очень дорогостоящим ИМО. Как достичь этого, используя api?
Для только один параметр: = Yii :: $ app-> 'urlManager-> createUrl ([ "пост/просмотр"," идентификатор "=> $ post-> id])?>' –
Полезно использовать '' '' Url :: to() '' 'вместо' '' Yii :: $ app-> urlManager-> createUrl() '' ' –
@ ГерманХохлов согласен. Я был относительно новым для Yii 2, когда я спросил об этом. Я понятия не имел, что у нас есть метод Url :: to(). Он короткий и не связан с $ app, который мне нравится. – Gogol