web-dev-qa-db-ja.com

いくつかの$ _GET変数なしで現在のURL / URIを取得する

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 
);
_
41
Sebastian

Yii 1

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

Yii2の場合:

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

これにより、次の形式で何かが出力されます。

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

Yii 1

他の答えのほとんどは間違っています。ポスターは、URL(一部)$ _GET-parametersなしでURLを要求しています。

完全な内訳は次のとおりです(現在アクティブなコントローラー、モジュールのURLを作成するかどうか)。

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

同じアクティブなコントローラーがない場合は、次のようにフルパスを指定する必要があります。

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

Yii URLの一般的な構築ガイド: http://www.yiiframework.com/doc/guide/1.1/en/topics.url #creating-urls

21
marcovtwout

現在の絶対リクエストURLを取得するには(アドレスバーに表示されているとおり、GETパラメーターとhttp://を使用)、次のように動作することがわかりました。

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

Yii2でできること:

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

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

7
Vladimir

だから、あなたは使うことができます

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

絶対ウェブルートURLを取得し、http [s]://を削除します

5

私はYiiでそれを行うことについて知りませんが、あなたはこれを行うことができます、そしてそれはどこでも動作するはずです(主に私の答え ここ )から解除されます:

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

または、Yiiメソッドのいずれかの結果を parse_url() に渡し、結果を操作して必要なものを再構築できます。

5
DaveRandom

あなたは間違いなくこれを探しています

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

コントローラーで実行する場合、このような何かが動作するはずです:

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

これは、アプリの設定で「わかりやすい」URLを使用していることを前提としています。

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

Yii2

Url::current([], true);

または

Url::current();
0
Ganesh Patel

Yii2の場合:これはより安全なYii::$app->request->absoluteUrl のではなく Yii::$app->request->url

0
Syakur Rahman