ルーティングは、アクセスしたURL情報から、フレームワーク側に渡すパラメータの取得とアクションファイルの決定方法を定義します。
ルーティング方法は、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アプリケーションと同様に使用できます。
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" /> ...