46

Yii で現在のページの URL を取得する方法。例えば:

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

$GET_['lg']しかし、 (文字列を手動で解析せずに)除外しますか?

つまり、URL からいくつかの変数を除いたものを返すために、 Yii::app()->requestUrl/メソッドに似たものを探しています。Chtml::link()$_GET

編集:現在の解決策:

unset $_GET['lg'];

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

16 に答える 16

76

イイ1

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

Yii2 の場合:

Yii::$app->request->url
于 2012-10-29T15:46:01.210 に答える
31
Yii::app()->createAbsoluteUrl(Yii::app()->request->url)

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

http://www.yoursite.com/your_yii_application/
于 2012-12-22T06:23:45.827 に答える
22

イイ1

他の答えのほとんどは間違っています。ポスターは、(一部の) $_GET パラメータなしで 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');

一般的な URL の構築に関する Yii ガイドを確認してください: http://www.yiiframework.com/doc/guide/1.1/en/topics.url#creating-urls

于 2014-03-17T17:05:32.537 に答える
15

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

Yii::app()->request->hostInfo . Yii::app()->request->url
于 2014-06-17T15:00:05.930 に答える
11

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

于 2015-10-29T08:34:25.480 に答える
6

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

Yii::app()->request->pathInfo
于 2015-12-07T05:53:58.560 に答える
6

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 メソッドの 1 つの結果を に渡し、その結果をparse_url()操作して必要なものを再構築することもできます。

于 2011-12-07T09:40:38.297 に答える
1

コントローラーで実行すると、次のようなものが機能するはずです。

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

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

于 2011-12-13T00:22:50.470 に答える
0
$validar= Yii::app()->request->getParam('id');
于 2015-03-11T06:53:40.783 に答える
-1

このバリアントを使用してみてください:

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

それが最も簡単な方法だと思います。

于 2014-02-08T11:35:07.560 に答える
-1

答えのほとんどは間違っています。

質問は、いくつかのクエリ パラメータなしで URL を取得することです。

これが機能する機能です。実際にはもっと多くのことを行います。不要なパラメーターを削除したり、既存のパラメーターを追加または変更したりできます。

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

}

利用方法:

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

これにより、クエリ パラメータ 'remove_this1' と 'remove_this2' が URL から削除され、新しい URL が返されます。

于 2017-01-12T10:02:12.343 に答える