it-swarm.com.de

Ruft die aktuelle URL/URI ohne einige $ _GET-Variablen ab

Wie Sie in Yii die URL der aktuellen Seite ermitteln können. Zum Beispiel:

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

aber ohne $GET_['lg'] (ohne die Zeichenfolge manuell zu analysieren)?

Ich meine, ich suche nach etwas, das den Yii::app()->requestUrl/Chtml::link()-Methoden ähnelt, um URLs abzüglich einiger $_GET-Variablen zurückzugeben.

Bearbeiten : Aktuelle Lösung:

unset $_GET['lg'];

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

Yii 1

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

Für Yii2:

Yii::$app->request->url
71
Felipe Almeida
Yii::app()->createAbsoluteUrl(Yii::app()->request->url)

Dies gibt etwas im folgenden Format aus:

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

Die meisten anderen Antworten sind falsch. Das Poster fragt nach der URL WITHOUT (einige) $ _GET-Parameter.

Hier ist eine vollständige Aufgliederung (Erstellen von URLs für den gerade aktiven Controller, Module oder nicht):

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

Wenn Sie nicht über denselben aktiven Controller verfügen, müssen Sie den vollständigen Pfad folgendermaßen angeben:

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

Lesen Sie den Yii-Leitfaden für das Erstellen von URLs im Allgemeinen: http://www.yiiframework.com/doc/guide/1.1/de/topics.url#creating-urls

20
marcovtwout

Um die absolute aktuelle Anforderungs-URL (genau wie in der Adressleiste, mit GET-Parametern und http: //) zu erhalten, habe ich festgestellt, dass Folgendes gut funktioniert:

Yii::app()->request->hostInfo . Yii::app()->request->url
12
James Fletcher

In Yii2 können Sie Folgendes tun:

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

Weitere Informationen: https://www.yiiframework.com/doc/api/2.0/yii-helpers-baseurl#current%28%29-detail

7
Vladimir

Sie können also verwenden 

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

um eine absolute Webroot-URL zu erhalten und die http [s] zu entfernen: // 

5

Ich weiß nicht, wie man das in Yii macht, aber Sie könnten das einfach tun, und es sollte überall funktionieren (weitgehend von meiner Antwort hier entfernt):

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

Alternativ können Sie das Ergebnis einer der Yii-Methoden an parse_url() übergeben und das Ergebnis bearbeiten, um das neu zu erstellen, was Sie möchten.

4
DaveRandom

Sie suchen definitiv danach 

Yii::app()->request->pathInfo
3
Dinesh Patil

So etwas sollte funktionieren, wenn es im Controller ausgeführt wird:

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

Dies setzt voraus, dass Sie in Ihrer App-Konfiguration "freundliche" URLs verwenden.

1
Ben
$validar= Yii::app()->request->getParam('id');
0
JAIME LAGOS

Yii2 

Url::current([], true);

oder

Url::current();
0
Ganesh Patel

Für Yii2: Dies sollte sicherer Yii::$app->request->absoluteUrl sein als Yii::$app->request->url.

0
Syakur Rahman