Caution: You are browsing the legacy symfony 1.x part of this website.
Cover of the book Symfony 5: The Fast Track

Symfony 5: The Fast Track is the best book to learn modern Symfony development, from zero to production. +300 pages showcasing Symfony with Docker, APIs, queues & async tasks, Webpack, SPAs, etc.

routing.yml設定ファイル

1.2
Symfony version
1.4
Language

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(もしくはtypecollectionである場合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にセットされる場合、modelmethod呼び出しによってオブジェクトが返されない場合、ルートは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オプションはルートに許可されるアクションの配列を定義します。 アクションはすべての利用可能なアクションのサブセット: listnewcreateeditupdatedeleteshowでなければなりません。

オプションが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_nameseditnewアクション用にurlパターンで使う単語を定義します。

model_methods

デフォルト: 空の配列

model_methodsオプションはモデルからオブジェクトを読み取るために呼び出すメソッドを定義します(sfObjectRoutemethodオプションを参照)。 これは実際にはlistobjectメソッドを定義する配列です:

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オプションを参照)。