我需要在Yii2控制器操作中使用render为url添加一些参数。例如,将cat = all参数添加到以下url:
localhost/sell/frontend/web/index.php?r=product/index
这是我的索引动作:
return $this->render('index', [
'product' => $product,
]);
答案 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\UrlManager
等UserId
方法。
答案 2 :(得分:0)
您可以像这样使重定向路由进入您的控制器:
$this->redirect(yii\helpers\Url::toRoute(['product/index', 'cat' => 'all']));