Obtenir L'URL/URI actuelle sans quelques variables $ GET

comment, dans Yii, obtenir L'URL de la page actuelle. Par exemple:

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

mais à l'exclusion du $GET_['lg'] (sans Parser la chaîne manuellement)?

je veux dire, je cherche quelque chose de similaire aux méthodes Yii::app()->requestUrl / Chtml::link() , pour renvoyer des URLs moins certaines des variables $_GET .

Modifier : solution Actuelle:

unset $_GET['lg'];

echo Yii::app()->createUrl(
  Yii::app()->controller->getId().'/'.Yii::app()->controller->getAction()->getId() , 
  $_GET 
);
36
demandé sur trejder 2011-12-07 13:32:15

15 réponses

Yii 1

Yii::app()->request->url

Pour Yii2:

Yii::$app->request->url
66
répondu Felipe Almeida 2018-08-08 22:02:46
Yii::app()->createAbsoluteUrl(Yii::app()->request->url)

ceci produira quelque chose dans le format suivant:

http://www.yoursite.com/your_yii_application/
28
répondu Bhargav 2012-12-22 06:23:45

la Plupart des autres réponses sont fausses. L'affiche demande l'url sans (certains) $_GET-paramètres.

voici une décomposition complète (création d'url pour le contrôleur actif, modules ou non):

// without $_GET-parameters
Yii::app()->controller->createUrl(Yii::app()->controller->action->id);

// with $_GET-parameters, HAVING ONLY supplied keys
Yii::app()->controller->createUrl(Yii::app()->controller->action->id,
    array_intersect_key($_GET, array_flip(array('id')))); // include 'id'

// with all $_GET-parameters, EXCEPT supplied keys
Yii::app()->controller->createUrl(Yii::app()->controller->action->id,
    array_diff_key($_GET, array_flip(array('lg')))); // exclude 'lg'

// with ALL $_GET-parameters (as mensioned in other answers)
Yii::app()->controller->createUrl(Yii::app()->controller->action->id, $_GET);
Yii::app()->request->url;

lorsque vous n'avez pas le même contrôleur actif, vous devez spécifier le chemin complet comme ceci:

Yii::app()->createUrl('/controller/action');
Yii::app()->createUrl('/module/controller/action');

consultez le guide Yii pour construire des url en général: http://www.yiiframework.com/doc/guide/1.1/en/topics.url#creating-urls

20
répondu marcovtwout 2014-03-17 17:05:32

pour obtenir l'url de requête absolue courante (exactement comme vu dans la barre d'adresse, avec GET params et http://) j'ai trouvé que le suivant fonctionne bien:

Yii::app()->request->hostInfo . Yii::app()->request->url
12
répondu James Fletcher 2014-06-17 15:00:05

à Yii2 vous pouvez faire:

use yii\helpers\Url;
$withoutLg = Url::current(['lg'=>null], true);

plus d'information: https://www.yiiframework.com/doc/api/2.0/yii-helpers-baseurl#current%28%29-detail

7
répondu Vladimir 2018-06-09 13:14:23

je ne sais pas à propos de faire dans Yii, mais vous pourriez faire cela, et il doit travailler n'importe où (en grande partie levé de ma réponse ici ):

// Get HTTP/HTTPS (the possible values for this vary from server to server)
$myUrl = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] && !in_array(strtolower($_SERVER['HTTPS']),array('off','no'))) ? 'https' : 'http';
// Get domain portion
$myUrl .= '://'.$_SERVER['HTTP_HOST'];
// Get path to script
$myUrl .= $_SERVER['REQUEST_URI'];
// Add path info, if any
if (!empty($_SERVER['PATH_INFO'])) $myUrl .= $_SERVER['PATH_INFO'];

$get = $_GET; // Create a copy of $_GET
unset($get['lg']); // Unset whatever you don't want
if (count($get)) { // Only add a query string if there's anything left
  $myUrl .= '?'.http_build_query($get);
}

echo $myUrl;

alternativement, vous pouvez passer le résultat de l'une des méthodes Yii dans parse_url() , et manipuler le résultat pour reconstruire ce que vous voulez.

4
répondu DaveRandom 2017-05-23 11:54:11

ainsi, vous pouvez utiliser

Yii::app()->getBaseUrl(true)

pour obtenir une url Webroot absolue, et supprimer le http[s]: / /

4
répondu nishanth thulasi 2014-05-15 07:24:36

Vous êtes certainement à la recherche de ce

Yii::app()->request->pathInfo
3
répondu Dinesh Patil 2015-12-07 05:53:58

quelque chose comme ceci devrait fonctionner, si exécuté dans le contrôleur:

$controller = $this;
$path = '/path/to/app/' 
  . $controller->module->getId() // only necessary if you're using modules
  . '/' . $controller->getId() 
  . '/' . $controller->getAction()->getId()
. '/';

cela suppose que vous utilisez des URL 'friendly' dans votre application config.

1
répondu Ben 2011-12-13 00:22:50
$validar= Yii::app()->request->getParam('id');
0
répondu JAIME LAGOS 2015-03-11 06:53:40

Yii2

Url::current([], true);

ou

Url::current();
0
répondu Ganesh Patel 2018-06-30 09:25:00

Pour Yii2: Cela devrait être plus sûr Yii::$app->request->absoluteUrl plutôt que Yii::$app->request->url

0
répondu Syakur Rahman 2018-10-05 11:31:33

Essayez d'utiliser cette variante:

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

C'est la façon la plus facile, je suppose.

-1
répondu 2014-02-08 11:35:07

la Plupart des réponses sont fausses.

la Question Est d'obtenir une url sans param de requête .

Voici la fonction qui fonctionne. Ça fait plus de choses en fait. Vous pouvez supprimer le paramètre que vous ne voulez pas et vous pouvez ajouter ou modifier un existant.

/**
 * 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);

}

utilisation:

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

cela supprimera la requête params 'remove_this1' et 'remove_this2' de L'URL et vous retournera la nouvelle URL

-1
répondu Codeformer 2017-01-12 10:02:12
echo Yii::$app->request->url;
-1
répondu nageen nayak 2018-06-08 12:02:49