Получить текущий URL / URI без некоторых переменных $ _GET - PullRequest
40 голосов
/ 07 декабря 2011

Как в Yii получить URL текущей страницы. Например:

http://www.yoursite.com/your_yii_application/?lg=pl&id=15

но исключая $GET_['lg'] (без разбора строки вручную)?

Я имею в виду, я ищу что-то похожее на Yii::app()->requestUrl / Chtml::link() методы для возврата URL-адресов минус некоторые $_GET переменные.

Редактировать : Текущее решение:

unset $_GET['lg'];

echo Yii::app()->createUrl(
  Yii::app()->controller->getId().'/'.Yii::app()->controller->getAction()->getId() , 
  $_GET 
);

Ответы [ 15 ]

0 голосов
/ 30 июня 2018

Yii2

Url::current([], true);

или

Url::current();
0 голосов
/ 08 июня 2018
echo Yii::$app->request->url;
0 голосов
/ 12 января 2017

Большинство ответов неверны.

Вопрос в том, чтобы получить URL без какого-либо параметра запроса.

Вот функция, которая работает. Это делает больше вещей на самом деле. Вы можете удалить ненужный параметр и добавить или изменить существующий.

/**
 * Function merges the query string values with the given array and returns the new URL
 * @param string $route
 * @param array $mergeQueryVars
 * @param array $removeQueryVars
 * @return string
 */
public static function getUpdatedUrl($route = '', $mergeQueryVars = [], $removeQueryVars = [])
{
    $currentParams = $request = Yii::$app->request->getQueryParams();

    foreach($mergeQueryVars as $key=> $value)
    {
        $currentParams[$key] = $value;
    }

    foreach($removeQueryVars as $queryVar)
    {
        unset($currentParams[$queryVar]);
    }

    $currentParams[0] = $route == '' ? Yii::$app->controller->getRoute() : $route;

    return Yii::$app->urlManager->createUrl($currentParams);

}

использование:

ClassName:: getUpdatedUrl('',[],['remove_this1','remove_this2'])

Это удалит параметры запроса «remove_this1» и «remove_this2» из URL и вернет вам новый URL

0 голосов
/ 11 марта 2015
$validar= Yii::app()->request->getParam('id');
0 голосов
/ 08 февраля 2014

Попробуйте использовать этот вариант:

<?php echo Yii::app()->createAbsoluteUrl('your_yii_application/?lg=pl', array('id'=>$model->id));?>

Думаю, это самый простой способ.

...