ホームページ >PHPフレームワーク >YII >yii フレームワークでルーティングを定義する方法

yii フレームワークでルーティングを定義する方法

(*-*)浩
(*-*)浩オリジナル
2019-12-11 11:47:483920ブラウズ

yii フレームワークでルーティングを定義する方法

ルーティングと URL 生成

YII アプリケーションがリクエストの処理を開始すると、最初に行うことは次のとおりです。リクエストされた URL をルートに変換します。ルーティングの役割は、リクエストを処理するために、その後、対応するコントローラーとオペレーションをインスタンス化することであり、処理プロセス全体をルーティングと呼びます。 (推奨学習: yiiフレームワーク)

ルーティングの逆のプロセスはURL生成と呼ばれ、指定されたrouを使用することを指します。 URL を生成するためのパラメータ情報。生成された URL を使用してリクエストを行うと、ルーティング処理プロセスはそれを再度解析し、元のルーティングおよびパラメータ情報を復元できます。

URL マネージャーは主にルーティングと URL 生成を担当し、アプリケーション コンポーネントとして登録されます。 URL マネージャーは、リクエストを解析し、ルーティングおよびパラメーター情報を解析するためのメソッド parseRequest() を提供します。

メソッド createUrl() は、指定されたルートとパラメーター情報から URL を生成するために使用されます。アプリケーション構成で URL マネージャーを構成すると、既存のプログラム コードを変更せずに、アプリケーションが任意の URL 形式を認識できるようになります。たとえば、次のコードを使用して URL を生成できます。

use yii\helpers\Url;
// Url::to() calls UrlManager::createUrl() to create a URL
$url = Url::to(['post/view', 'id' => 100]);

URL マネージャーの構成に応じて、上記のコードによって生成される URL は次のようになります。この URL がその後リクエストされると、元のルートと上記のパラメーター情報に解析されます。

/index.php?r=post/view&id=100
/index.php/post/100
/posts/100

URL 形式

URL マネージャーは、デフォルト URL 形式とプリティ URL 形式の 2 つの URL 形式をサポートします。デフォルトの URL 形式では、クエリ パラメータ r を使用してルートを渡し、他のパラメータは通常の方法で URL に配置されます。

たとえば、URL /index.php?r=post/view&id=100 には、post/view のルートと 100 のパラメータ ID があります。デフォルトの URL 形式では、URL マネージャーの構成は必要ありません。

美しい URL 形式では、エントリ スクリプト名の後に追加のパスを使用して、ルートと関連パラメーターを表示します。

たとえば、URL /index.php/post/100 の追加パスは /post/100、表示されるルートは post/view、パラメータ ID は 100 です。

この URL 形式を使用する場合は、実際のニーズに基づいて URL ルール セットを設計する必要があります。 URL マネージャーで属性 enablePrettyUrl の値を変更することで、これら 2 つの URL 形式を切り替えることができます。

ルーティング

ルーティングの作業は 2 つのステップに分けることができます:

1. ルートと関連パラメータを解析する;

2. ルートに基づいて応答を生成するコントローラー操作は、リクエストの処理に使用されます。

デフォルトの URL 形式を使用する場合、ルートの解析は非常に簡単で、パラメーター r の値を取得するだけです。

美しい URL 形式を使用する場合、URL マネージャーは URL を検出します。リクエストに一致するルートを見つけるために設定されたルール。一致するルールが見つからない場合は、例外 yii\web\NotFoundHttpException がスローされます。

リクエストからルートが解析されたら、次に行うことは、そのルートに関連付けられたコントローラー アクションを作成することです。ルートはいくつかの部分にスラッシュカットされます。たとえば、サイト/インデックスはサイトとインデックスに分割されます。

各部分は ID であり、モジュール、コントローラー、または操作を指す場合があります。ルートの最初の部分から開始して、モジュール (存在する場合)、コントローラー、およびアクションを作成するには、次の手順を実行する必要があります:

1. アプリケーション本体を現在のモジュールに設定します。

2. 現在のモジュールの yii\base\Module::controllerMap に現在の ID が含まれているかどうかを確認します。その場合、テーブル内の設定に基づいてコントローラー オブジェクトが作成され、ステップ 5 に進んでルートの後続のフラグメントを実行します。

3. ID が現在のモジュールの yii\base\Module::modules 属性のモジュール リスト内のモジュールを指しているかどうかを確認します。その場合、モジュール テーブルの構成に基づいてモジュール オブジェクトが作成され、新しく作成されたモジュールが環境として使用され、ステップ 2 に戻って次のルートを解析します。

4. この ID をコントローラー ID として扱い、コントローラー オブジェクトを作成します。次のステップを使用して、ルート内の残りのフラグメントを解析します。

5. コントローラーは、yii\base\Controller::actions() で現在の ID を検索します。見つかった場合は、マッピング テーブル内の設定に基づいてアクション オブジェクトを作成します。それ以外の場合、コントローラーは、ID に対応し、アクション メソッドで定義されたインライン アクションの作成を試みます。

上記の手順でエラーが発生した場合、アプリケーションは例外 yii\web\NotFoundHttpException をスローします。これは、ルーティング処理が失敗したことを意味します。

以上がyii フレームワークでルーティングを定義する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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