routing.yml設定ファイルはルートの定義を可能にします。
アプリケーション用のメインのrouting.yml設定ファイルはapps/APP_NAME/config/ディレクトリで見つかります。
routing.yml設定ファイルは名前つきのルートの定義のリストを含みます:
ROUTE_1: # definition of route 1 ROUTE_2: # definition of route 2 # ...
リクエストがあると、ルーティングシステムはやってくるURLのルートがマッチするか試します。
最初にマッチするルートが優先されるので、routing.yml設定ファイルで定義されるルートの順序は重要です。
routing.yml設定ファイルが読み込まれるとき、それぞれのルートがclassクラスのオブジェクトに変換されます:
ROUTE_NAME: class: CLASS_NAME # configuration if the route
classクラスはsfRoute基底クラスを継承します。
クラスが提供されない場合、sfRoute基底クラスがフォールバックとして使われます。
note
routing.yml設定ファイルはPHPファイルとしてキャッシュされます;
処理はsfRoutingConfigHandlerクラスによって自動的に管理されます。
ルートクラス
ルートのコンフィギュレーション
routing.yml設定ファイルはルートを細かく設定するための複数のコンフィギュレーションをサポートします。
これらのコンフィギュレーションはそれぞれのルートをオブジェクトに変換するためにsfRoutingConfigHandlerクラスによって使われます。
class
デフォルト: sfRoute(もしくはtypeがcollectionである場合sfRouteCollection、下記を参照)
ルートに使うルートクラスはclass設定によって変更できます。
url
デフォルト: /
url設定は現在のリクエストのために使われるルートに対してやってくるURLがマッチしなければならないパターンです。
パターンは複数のセグメントで構成されます:
- 変数(コロン
:をプレフィックスとする単語) - 定数
- キー/値のペアのシーケンスにマッチするワイルドカード(
*)
それぞれのセグメントはあらかじめ定義される区切り文字の1つで区切らなければなりません(デフォルトでは/もしくは.)。
params
デフォルト: 空の配列
params設定はルートに関連づけされるパラメーターの配列を定義します。
これらはurlに含まれる変数、もしくはこのルートに関連する変数のためのデフォルト値になります。
param
デフォルト: 空の配列
この設定はparams設定と同等です。
options
デフォルト: 空の配列
options設定はふるまいを細かくカスタマイズするためにルートオブジェクトに渡すオプションの配列です。
次のセクションでそれぞれのルートクラスで利用可能なオプションを説明します。
requirements
デフォルト: 空の配列
requirements設定はurl変数で満たさなければならないルート要件の配列です。
キーはurl変数で値は変数がマッチしなければならない正規表現です。
tip
正規表現は別の正規表現に含まれるので、区切り文字でこれらを囲んだり、値全体がマッチするように^もしくは$をつける必要はありません。
type
デフォルト: null
collectionにセットされている場合、ルートはルートコレクションとして読み込まれます。
note
classの名前にCollectionの単語が含まれる場合、この設定はコンフィギュレーションハンドラーによって自動的にcollectionにセットされます。
このことはたいていの場合この設定を使う必要のないことを意味します。
sfRoute
すべてのルートクラスはsfRoute基底クラスを継承します。
この基底クラスは必須のルート設定を提供します。
sfRequestRoute
sf_method
デフォルト: get
sf_methodオプションはrequirements配列で使われます。
これはルートにマッチする処理のなかでHTTPリクエストを強制します。
sfObjectRoute
sfObjectRouteの次のすべてのオプションはrouting.yml設定ファイルのoptions設定内部になければなりません。
model
modelオプションは必須であり現在のルートに関連するモデルクラスの名前です。
type
typeオプションは必須でありモデルのために必要なルートの種類です。
これはobjectもしくはlistのどちらかになります。
object型のルートは単独のモデルオブジェクトを表し、list型のルートはモデルオブジェクトのコレクションを表します。
method
methodオプションは必須です。
このオプションはこのルートに関連するオブジェクトを読み取るためにモデルクラスで呼び出すメソッドです。
これはstaticなメソッドでなければなりません。
このメソッドは引数として解析されるルートのパラメーターで呼び出されます。
allow_empty
デフォルト: true
allow_emptyオプションがfalseにセットされる場合、modelのmethod呼び出しによってオブジェクトが返されない場合、ルートは404の例外を投げます。
convert
デフォルト: toParams
convertオプションはこのモデルオブジェクトに基づいてルートを生成するためにモデルを適切なパラメーターの配列に変換するために呼び出すメソッドです。
これは少なくともルートパターンの必須パラメーターを持つ配列を返さなければなりません(url設定で定義される)。
sfPropelRoute
method_for_criteria
デフォルト: コレクションにはdoSelect、単独のオブジェクトにはdoSelectOne
method_for_criteriaオプションは現在のリクエストに関連するオブジェクトを読み取るためにピアクラスで呼び出されるメソッドを定義します。
メソッドは引数として解析されるルートのパラメーターで呼び出されます。
sfDoctrineRoute
method_for_query
デフォルト: none
method_for_queryオプションは現在のリクエストに関連するオブジェクトを読み取るためにモデルを呼び出すメソッドを定義します。
現在のクエリオブジェクトは引数として渡されます。
オプションがセットされていない場合、クエリはexecute()メソッドで"実行"されるだけです。
sfRouteCollection
sfRouteCollection基底クラスはルートのコレクションを表します。
sfObjectRouteCollection
model
modelオプションは必須で現在のルートに関連するモデルクラスの名前です。
actions
デフォルト: false
actionsオプションはルートに許可されるアクションの配列を定義します。
アクションはすべての利用可能なアクションのサブセット: list、new、create、edit、update、deleteとshowでなければなりません。
オプションがfalseにセットされている場合、デフォルトではwith_showオプションが、falseにセットされている場合showアクション以外のすべてのアクションが利用可能になります(下記を参照)。
module
デフォルト: ルートの名前
moduleオプションはモジュールの名前を定義します。
prefix_path
デフォルト: ルートの名前の前につけられる/
prefix_pathオプションはすべてのurlパターンの先頭につけられるプレフィックスを指定します。
これは任意の有効なパターンになり変数と複数のセグメントを含むことができます。
column
デフォルト: id
columnオプションはモデルオブジェクト用の一意的な識別子として使うモデルのカラムを定義します。
with_show
デフォルト: true
showアクションはルート用に許可されるアクションに含めなければならないか決定するためにwith_showオプションはactionsオプションがfalseにセットされているときに使われます。
segment_names
デフォルト: array('edit' => 'edit', 'new' => 'new'),
segment_namesはeditとnewアクション用にurlパターンで使う単語を定義します。
model_methods
デフォルト: 空の配列
model_methodsオプションはモデルからオブジェクトを読み取るために呼び出すメソッドを定義します(sfObjectRouteのmethodオプションを参照)。
これは実際にはlistとobjectメソッドを定義する配列です:
model_methods: list: getObjects object: getObject
requirements
デフォルト: columnに対して\d+
requirementsオプションはルート変数に適用するルート要件の配列を定義します。
with_wildcard_routes
デフォルト: false
with_wildcard_routesオプションは2つのワイルドカードのルート: (1つは単独のオブジェクト用、もう1つはオブジェクトコレクション用)を通してアクションにアクセスできるようにします。
route_class
デフォルト: sfObjectRoute
route_classオプションはコレクションに使われるデフォルトのルートオブジェクトをオーバーライドします。
collection_actions
デフォルト: 空の配列
collection_actionsオプションはコレクションルートで利用可能な追加アクションの配列を定義します。
object_actions
デフォルト: 空の配列
object_actionsオプションはオブジェクトルートで利用可能な追加アクションの配列を定義します。
sfPropelRouteCollection
sfPropelRouteCollectionルートクラスはsfRouteCollectionを継承し、デフォルトのルートクラスをsfPropelRouteに変更します(上記のroute_classオプションを参照)。
sfDoctrineRouteCollection
sfDoctrineRouteCollectionルートクラスはsfRouteCollectionを継承し、デフォルトのルートクラスをsfDoctrineRouteに変更します(上記のroute_classオプションを参照)。
This work is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported License license.