Мне нужно добавить некоторый параметр в URL с помощью рендера в действии контроллера Yii2. Например, добавьте параметр cat = all к следующему URL:
localhost/sell/frontend/web/index.php?r=product/index
и это мое индексное действие:
return $this->render('index', [
'product' => $product,
]);
Вы можете создать URL, как показано ниже:
yii\helpers\Url::toRoute(['product/index', 'cat' => 'all']);
Вы можете перенаправить в контроллер, как показано ниже:
$this->redirect(yii\helpers\Url::toRoute(['product/index', 'cat' => 'all']));
Тогда сделайте ваш взгляд.
Для генерации URL с использованием Yii2 юй \ хелперы \ 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
методы, такие как createUrl.
Вы можете сделать перенаправить маршрут в ваш контроллер следующим образом:
$this->redirect(yii\helpers\Url::toRoute(['product/index', 'cat' => 'all']));