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

6voto

Dinesh Patil Points 417

Vous êtes certainement à la recherche de ce

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

5voto

DaveRandom Points 45661

Je ne sais pas si vous pouvez le faire dans Yii, mais vous pouvez faire ceci, et cela devrait fonctionner n'importe où (largement repris de ma réponse). aquí ) :

// 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 pourriez passer le résultat de l'une des méthodes Yii dans parse_url() et de manipuler le résultat pour reconstruire ce que vous voulez.

5voto

Ainsi, vous pouvez utiliser

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

pour obtenir une url Absolute webroot, et dépouiller le http[s]://

1voto

Ben Points 93

Quelque chose comme ça devrait fonctionner, si c'est 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 "conviviales" dans la configuration de votre application.

0voto

JAIME LAGOS Points 9
$validar= Yii::app()->request->getParam('id');

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