Yii2使用查询参数呈现url

时间:2014-12-01 19:58:31

标签: php url routing yii2 render

我需要在Yii2控制器操作中使用render为url添加一些参数。例如,将cat = all参数添加到以下url:

localhost/sell/frontend/web/index.php?r=product/index

这是我的索引动作:

return $this->render('index', [
    'product' => $product,    
]);

3 个答案:

答案 0 :(得分:4)

您可以创建如下网址:

yii\helpers\Url::toRoute(['product/index', 'cat' => 'all']);

您可以在控制器中重定向,如下所示:

$this->redirect(yii\helpers\Url::toRoute(['product/index', 'cat' => 'all']));

然后渲染你的视图。

答案 1 :(得分:1)

使用Yii2 yii\helpers\Url to()toRoute()方法生成网址:

$url = yii\helpers\Url::to(['product/index', 'cat' => 'all']);

或:

$url = yii\helpers\Url::toRoute(['product/index', 'cat' => 'all']);

然后你可以在控制器中重定向:

return $this->redirect($url);

另请注意,控制器redirect()方法只是yii\web\Response::redirect()的快捷方式,后者又将其第一个参数传递给:yii\helpers\Url::to(),因此您可以直接将路径数组输入这样:

return $this->redirect(['product/index', 'cat' => 'all']);

请注意: @ ali-masudianpour的其他答案可能在Yii2的最早版本中是正确的,但在Yii2的更高版本中(包括最新版本 - 2.0.15在撰写本文时) ),Url辅助方法只接受一维数组,而这些数组又被传递到yii\web\UrlManagerUserId方法。

答案 2 :(得分:0)

您可以像这样使重定向路由进入您的控制器:

$this->redirect(yii\helpers\Url::toRoute(['product/index', 'cat' => 'all']));