URLマッピング(分かりやすいURL)

APIマニュアル
TUrlMappingモジュールは、特定のパターンに基づいて分かりやすいURLの形にするのと同時に、PRADOが認識することを可能にします。
TUrlMappingは要求されたURLに対応したURLパターンのリストから成ります。このパターンは、まずURLを要求パラメータに分解するために使用されます。($this->Request['paramname']という様にparamnameの値を取得できます。)。 このパターンは、また、カスタマイズされたURLを構成するために使用できます。 このケースにおけるパラメータはGET変数となります。
TUrlMappingを使うためには、THttpRequestモジュールのUrlManagerプロパティをTUrlMappingモジュールIDとして設定しなければなりません。以下の例をご参照ください。
<modules>
   <module id="request" class="THttpRequest" UrlManager="friendly-url" />
   <module id="friendly-url" class="System.Web.TUrlMapping">
       <url ServiceParameter="Posts.ViewPost" pattern="post/{id}/" parameters.id="\d+" />
       <url ServiceParameter="Posts.ListPost" pattern="archive/{time}/" parameters.time="\d{6}" />
       <url ServiceParameter="Posts.ListPost" pattern="category/{cat}/" parameters.cat="\d+" />
   </module>
</modules>
上記の例は、PRADOでリリースしているブログデモアプリケーションの設定ファイル(Application.xml)の一部でが、以下のURLフォーマットによりアクセスできるものです。:
/index.php/post/123 は /index.php?page=Posts.ViewPost&id=123 に相当します。
/index.php/archive/200605 は /index.php?page=Posts.ListPost&time=200605 に相当します。
/index.php/category/2 は /index.php?page=Posts.ListPost&cat=2 に相当します。
ServiceParameterおよびServiceID(デフォルトIDは"page")は、各々 Request module のサービスパラメーターおよびサービスIDを設定します。TPageServiceサービスのためのサービスパラメータがそのページのクラス名となります。例えば「index.php?page=Home」における"page"はサービスIDであり、サービスパラメータは"Home"となります。 他のサービスによりサービスパラメータとIDは違ったふうに使われえます。 これ以上の詳細については、Servicesを見てください。
情報
リクエストモジュールがリクエストを処理する前に、TUrlMappingは設定されなければなりません。 これは、アプリケーション設定ファイル(Application.xml) の<services>エレメントの外で、TUrlMappingを宣言しなくてはならないということを意味します。 /ディレクトリconfig.xmlのマッピングを指定することはサポートされません。

URLパターンの指定

TUrlMappingは、あらかじめURLパターンで指定されたリストに基づいて、カスタマイズされたURLフォーマットの認識を可能にします。 個々のパターンは<url>タグにおいて指定されます。
パターンとパラメータ属性値は、地図の作成標準を決定する正規表現パターンです。 パターンプロパティは、左のブレース の間に同封されたパラメータ名によって正規表現を取ります。 個々のパラメータのためのパターンは、パラメータ属性コレクションを使うようにされえます。 例えば、
<url ServiceParameter="ArticleView" pattern="articles/{year}/{month}/{day}"
    parameters.year="\d{4}" parameters.month="\d{2}" parameters.day="\d+" />
例は以下の正規表現と等しい(それは、PHPで入手可能な正規表現において、「名付けられたグループ」機能を使います):
<url ServiceParameter="ArticleView"
    RegularExpression="/articles\/(?P<year>\d{4})\/(?P<month>\d{2})\/(?P<day>\d+)/u" />
上記の例には、パターンは、「年」、「月」、および「日」と名付けられた3つのパラメータを含んでいます。 これらのパラメータのためのパターンは、それぞれ「\d{4}」(4桁)(2桁)、「\d{2}」、および「\d+」です(1桁以上)。 本質的に、パラメータ属性名と値は、完全な正規表現ストリングを成形するためにパターンストリングのプレースホールダーを取り替える時に、部分列として使われます。
もしRegularExpressionプロパティを使うつもりであったならば、正規表現においてスラッシュを免れる必要があります。
上記のパターン例から続いています http://example.com/index.php/articles/2006/07/21とマッチし、有効なURL 。 しかし、日のパラメータパターンが満たされていないので、http://example.com/index.php/articles/2006/07/helloは有効ではありません。 デフォルト TUrlMappingPatternクラス において、パターンはURLだけのPATH_INFO部分と競争します。 例えば、URLの/記事/2006/07/21部分だけが考慮されます。
地図が作られた要求URLはindex.php?page=ArticleViewと等しい&year=2006&month=07&day=21。 要求パラメータ値は標準の要求オブジェクトを通して入手可能です。 例えば$this->Request[『年』]。
URLマッピングは、それらが置かれる注文において評価されて、URLとマッチしている最初のパターンだけが使われます。 滝のような落下は、URLマッピングを特定の注文に置くことによって、地図を作って達成できます。例えば、最初に、最も具体的なマッピングを置きます。

カスタマイズURLの作成

バージョン3.1.1以来、TUrlMappingが、提供されたパターンに基づいて、構成カスタマイズされたURLをサポートし始めます。 この機能を可能にするためには、TUrlMapping.EnableCustomUrlを正常に設定してください。 THttpRequest.constrcutUrl()がもたらされる時には、実際のURL建設工事はマッチングTUrlMappingPattern例に委任されます。 それは、パターンのパラメータを、constructUrl()に手渡された一致GET変数と取り替えます。 マッチングパターンがもの whose ServiceID であること、および ServiceParameterプロパティが それらと同じであること constructUrl()に移り変わった 、およびGET変数に発見されている名付けられたパラメータ。 例えば、constructUrl(『Posts.ListPost』、配列(『猫』=>2))は、上記の例において3番目のパターンを使います。 デフォルトで、TUrlMappingにより、/パス/に/index.php/記事/3などの現在の要求PHPスクリプトパスを前置されるURLが構成されます。 ユーザーは、そのUrlPrefixプロパティを通してURL接頭辞を明示的に指定してこの行動を変更できます。 例えば、もしWebサーバーコンフィギュレーションがindex.phpをデフォルトスクリプトとみなすならば、私達はUrlPrefix それゆえ /パス/それ を設定できて、 構成されたURLは /パス/に/記事/3のように見えます。