ホームページ >バックエンド開発 >PHPチュートリアル >Yii2フレームワークでのURL生成方法の詳細説明

Yii2フレームワークでのURL生成方法の詳細説明

巴扎黑
巴扎黑オリジナル
2018-05-21 11:40:241846ブラウズ

この記事では主に Yii2 で URL を生成する方法を紹介します。編集者がそれを参考にさせていただきます。エディターをフォローして、一緒に見てみましょう

前書き

プロジェクトでは、Yii2 の組み込み URL ツール クラスを使用してリンクを生成することをお勧めします。これにより、サイト全体の URL の動作を非常に簡単に管理できます。たとえば、構成 URL 形式を変更してサイト全体を変更するなど。 URL のより高度な使用方法については、公式ドキュメントを参照してください。この記事では、Yii2 が URL を生成するいくつかの方法のみを紹介します。

Yii2のデフォルトのURLリンク形式

Yii2のデフォルトのURLリンク形式とは、URL美化がオンになっている場合の形式を指します。サブモジュールの URL 形式:

// 参数 r 中的 article 表示控制器, view 表示动作
http://www.example.com/index.php?r=article/view&id=100

サブモジュールの URL 形式を有効にします:

// 参数 r 中的 kernel 表示子模块
http://www.example.com/index.php?r=kernel/article/view&id=100
E

YII2 組み込み URL 生成ツール

    URLMANAGERL アシスタント クラス: yiihelpersurlllll
  1. -URL 生成ツールでは、将来的にソース コードを変更することなく、設定を通じてサイト全体の URL を美しくすることができます
  2. URL Manager


URL Manager は、 urlManager と呼ばれる組み込みのアプリケーション コンポーネントです。 URL は、次の 2 つの方法で WEB アプリケーションとコンソール アプリケーションで作成できます。 ->createAbsoluteUrl($params, $schema = null)

createUrl メソッドは、ルート ディレクトリの相対パスを生成します。例: /index.php?r=article/view

createAbsoluteUrl() メソッドは絶対パスを生成します。例: http://www.example.com/index.php?r=article/view

    共通 URL管理 URL マネージャーを使用して URL を作成する例:
  1. // URL:/index.php?r=article/view
    \Yii::$app->urlManager->createUrl('article/view');
    
    // URL:/index.php?r=article/view&id=2
    \Yii::$app->urlManager->createUrl(['article/view','id'=>2]);
    
    // URL: http://www.example.com?r=kernel/article/view
    echo \Yii::$app->urlManager->createAbsoluteUrl('kernel/article/view');

    URL ヘルパー クラス
  2. URL マネージャーと比較して、 yiihelpersUrl ヘルパー クラスを使用すると、URL の作成を大幅に簡素化できます。

  3. 1. 現在の URL /index.php?r=kernel/article/view&id=10 を想定し、URL ヘルパー クラス Url::to() がどのように機能するかを説明します。 > 動作します (推奨されません):
// 创建当前 URL
// 显示:/?r=kernel/article/view&id=10
echo Url::to();

// 创建当前 URL
// 显示:http://www.example.com/?r=kernel/article/view&id=10
echo Url::to('', true);

// 字符参数,没啥用
// 显示:kernel/article/view
echo Url::to('kernel/article/view');

// 创建路由,数组参数的自动调用 Url::toRoute(...)
// 显示:/index.php?r=kernel/article/view
echo Url::to(['article/view']);

2. 現在の URL /index.php?r=kernel/article/view&id=10 を想定し、URL ヘルパー クラス URL について説明します。 :toRoute() メソッドの動作 (推奨): createUrl 方法生成根目录的相对路径,例如:/index.php?r=article/view

createAbsoluteUrl() 方法生成的是绝对路径,例如:http://www.example.com/index.php?r=article/view

常见的利用 URL 管理器创建 URL 的例子:

// 创建当前路由(仅继承参数r的值)
// 显示:/index.php?r=kernel/article/view
echo Url::toRoute([]);

// 相同的模块和控制器,不同的动作(仅继承参数r的值)
// 显示:/index.php?r=kernel/article/list
echo Url::toRoute('list');

// 相同的模块和控制器,不同的动作(仅继承参数r的值)
// 显示:/index.php?r=kernel/article/list&cat=contact
echo Url::toRoute(['list','cat'=>10]);

// 相同模块,不同控制器和动作(仅继承参数r的值)
// 显示:/index.php?r=kernel/product/index
echo Url::toRoute('product/index');

// 绝对路由,不管是被哪个模块和控制器调用
// 显示:/index.php?r=product/index
echo Url::toRoute('/product/index');

// 控制器动作 `actionListHot` 的 URL 格式(仅继承参数r的值,区分大小写)
// 显示:/index.php?r=kernel/article/list-hot
echo Url::toRoute('list-hot');

// 从别名中获取 URL 
// 显示:http://www.baidu.com/
Yii::setAlias('@baidu', 'http://www.baidu.com/');
echo Url::to('@baidu');

URL 助手类

相对于 URL管理器,使用 yiihelpersUrl 助手类可大大简化 URL 的创建。

1. 假设当前 URL /index.php?r=kernel/article/view&id=10,以下说明 URL 助手类 Url::to() 是如何工作的(不推荐):

// 创建当前 URL(包括路由和参数)
// 显示:/?r=kernel/article/view&id=10
echo Url::current();

// 移除参数 id
// 显示:/?r=kernel/article/view
echo Url::current(['id'=>null]);

// 新增参数 cat
// 显示:/?r=kernel/article/view&id=10&cat=2
echo Url::current(['cat'=>2]);

2. 假设当前 URL /index.php?r=kernel/article/view&id=10,以下说明 URL 助手类 Url::toRoute() 方法是如何工作的(推荐):

rrreee

3. 假设当前 URL /index.php?r=kernel/article/view&id=10,以下说明 URL 助手类 Url::current() rrreee

3. 現在の URL /index.php?r=kernel/article/view&id=10 を想定し、以下で説明します。 URL ヘルパー クラス Url::current() メソッドの仕組み (推奨): 🎜rrreee

以上がYii2フレームワークでのURL生成方法の詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。