ドキュメント
リリースカレンダー
リンク
SourceForge.jp SourceForge.JPへ
php.net PHP公式サイトへ
TOP  >  ドキュメント > 機能(フレームワーク依存)  >  ルーティング

ルーティング

 ルーティングは、アクセスしたURL情報から、フレームワーク側に渡すパラメータの取得とアクションファイルの決定方法を定義します。

1. ルーティングの方法

 ルーティング方法は、defines.xmlで設定される定数 SYL_ROUTER_RULE で設定する下記の2つが定義されています。

定数値 概要
pathinfo PATH_INFO環境変数を使用したルーティング。
物理的なファイルパスに依存しないため、拡張子をhtmlに見せたりと柔軟なURLを構成できます。(デフォルト)
parameter GETやPOSTパラメータを使用したルーティング。
PATH_INFO環境変数が使用できない場合に使用します。

 定数値が pathinfo の場合、例えば下記のURLにアクセスした場合、

http://syl.jp/contents.php/document/function.html?example=test

下記のルールに基づき、アクション関連値を取得します。

フロントコントローラ: (ドキュメントルート) /contents.php
アクションファイル: (SYL_APP_DIR) /actions/document/function.php
クエリストリング: example=test

「フロントコントローラ」は、リクエストを受けつけ、フレームワークを起動するファイルです。

「アクションファイル」は、actions.xml の設定を経由してアプリケーションの処理を実行するファイルにマッピングされます。

「クエリストリング」は、オプションで通常のWEBアプリケーションと同様に使用できます。

2. ルーティングの設定

 1. の例のような 1URL = 1アクション = 1テンプレート であれば、ルーティングの設定は必要ありませんが、 時には、複数URL に対して1アクションを紐づけたり、 複数のアクションから、1テンプレートを参照したほうが効率的な場合があります。 そのような場合は、ルーティング設定ファイル(routers.xml)で変更します。
また、ビュータイプのデフォルト値を変更する場合や、レイアウト機能を使用する場合も設定ファイルを変更します。

複数のURLに1つのアクションファイルをマッピングする例

下記記述は、全てのリクエストに対して、/Index.php アクションファイルを参照するように設定しています。

...
<router requestAction="/(.+).php"
        forwardAction="/Index.php" />
...

複数のアクションファイルに対して、1つのテンプレートファイルをマッピングする例

下記記述は、全てのアクションファイルに対して、/Index.html テンプレートファイルを参照するように設定しています。

...
<router requestAction="/(.+).php"
        forwardAction="/(.+).php"
        forwardTemplate="/Index.html" />
...

ビュータイプのデフォルトを変更する例

下記記述は、全てのリクエストに対して、デフォルトのビュータイプを、smarty に変更しています。

...
<router requestAction="/(.+).php"
        viewType="smarty" />
...

レイアウト機能を使用する例

下記記述は、全てのリクエストに対して、smarty ビューレイアウト(レイアウト名: default)を使用するように設定しています。

...
<router requestAction="/(.+).php"
        viewType="layout.smarty"
        layoutName="default" />
...