ホームページ > バックエンド開発 > PHPチュートリアル > URLを生成するYii2メソッド

URLを生成するYii2メソッド

小云云
リリース: 2023-03-20 10:38:01
オリジナル
1644 人が閲覧しました

プロジェクトでは、Yii2 の組み込み 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
ログイン後にコピー

Yii2 組み込み URL 生成ツール

  1. URL マネージャー: urlManager

  2. URLヘルパークラス: yiihelpersUrl

組み込みのURL生成ツールを使用すると、ソースコードを変更せずに設定を通じてサイト全体のURLを美しくできます

URL Manager

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

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

  2. createAbsoluteUrl() メソッドは絶対パスを生成します。例: http://www.example.com/index.php?r=article/view
  3. 共通 URL URL マネージャーを使用して URL を作成する例:

// 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');
ログイン後にコピー
createUrl 方法生成根目录的相对路径,例如:/index.php?r=article/view

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

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


// 创建当前 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']);
ログイン後にコピー

URL 助手类

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

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


// 创建当前路由(仅继承参数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');
ログイン後にコピー

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


// 创建当前 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]);
ログイン後にコピー

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

URL ヘルパー クラス


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


1. 現在の URL /index.php?r=kernel/article/view&id=10 を想定し、URL ヘルパー クラス Url::to() がどのように機能するかを説明します。 > 動作します (非推奨):

rrreee

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🎜 関連する推奨事項: 🎜🎜🎜🎜php リクエスト URL メソッドの概要🎜🎜🎜🎜javascript URLをjson形式に解析する2つの方法🎜🎜🎜🎜Laravelのurl()のルートアドレス変更の詳細説明🎜🎜

以上がURLを生成するYii2メソッドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート