Yii2 рендер URL с параметрами запроса

Мне нужно добавить некоторый параметр в URL с помощью рендера в действии контроллера Yii2. Например, добавьте параметр cat = all к следующему URL:

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

и это мое индексное действие:

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

4

Решение

Вы можете создать URL, как показано ниже:

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

Вы можете перенаправить в контроллер, как показано ниже:

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

Тогда сделайте ваш взгляд.

4

Другие решения

Для генерации 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.

1

Вы можете сделать перенаправить маршрут в ваш контроллер следующим образом:

$this->redirect(yii\helpers\Url::toRoute(['product/index', 'cat' => 'all']));
0
По вопросам рекламы [email protected]