46 votes

Obtenir l'URL/URI actuel sans certaines variables $_GET

Comment, dans Yii, obtenir l'URL de la page courante. Par exemple :

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

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

Je veux dire, je cherche quelque chose de similaire à la Yii::app()->requestUrl / Chtml::link() pour renvoyer des URL moins certaines des $_GET variables.

Modifier : Solution actuelle :

unset $_GET['lg'];

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

75voto

Felipe Almeida Points 2026

Yii 1

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

Pour Yii2 :

Yii::$app->request->url

31voto

Bhargav Points 393
Yii::app()->createAbsoluteUrl(Yii::app()->request->url)

Cela donnera quelque chose au format suivant :

http://www.yoursite.com/your_yii_application/

21voto

marcovtwout Points 1473

Yii 1

La plupart des autres réponses sont fausses. L'affiche demande l'url SANS (certains) paramètres $_GET.

Voici une répartition complète (création d'url pour le contrôleur actuellement 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(['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(['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;

Si 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 la création d'url en général : http://www.yiiframework.com/doc/guide/1.1/en/topics.url#creating-urls

15voto

James Points 46

Pour obtenir l'url absolue de la requête en cours (exactement telle qu'elle apparaît dans la barre d'adresse, avec les paramètres GET et http://), j'ai découvert que la méthode suivante fonctionne bien :

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

11voto

Vladimir Points 419

Dans Yii2, vous pouvez le faire :

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

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X