加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – Yii2 – 带有参数数组的createUrl()?

发布时间:2020-12-13 13:37:48 所属栏目:PHP教程 来源:网络整理
导读:根据 Yii2 documentation,我应该构建如下URL: $appUrl = Yii::$app-urlManager-createUrl([Yii::$app-controller-id . '/' . Yii::$app-controller-action-id,'p1' = 'v1','p2' = 'v2'],null); 它输出: /index.php?r=users%2Findexp1=v1p2=v2 哪个是正确的
根据 Yii2 documentation,我应该构建如下URL:
$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

哪个是正确的输出.现在,如果我有一个params数组,我直接想要传递给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?r=users/index&p1=v1&p2=v2

请注意$arrayParams是由另一个方法生成的,我无法提取所有的键和值,并在createUrl()中逐个传递它们.这将是非常昂贵的IMO.如何使用Yii的api实现这一目标?

使用 array_merge创建所需的数组结构.
$controller = Yii::$app->controller;
$arrayParams = ['p1' => 'v1','p2' => 'v2'];

$params = array_merge(["{$controller->id}/{$controller->action->id}"],$arrayParams);

Yii::$app->urlManager->createUrl($params);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读