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.

filters.yml 設定ファイル

1.4
Symfony version
1.2
Language

すべてのリクエストで実行されるフィルタチェーンは filters.yml ファイルに記述します。

アプリケーションの filters.yml ファイルは apps/APP_NAME/config/ ディレクトリに配置されています。

設定ファイルの原則の章で述べたように、filters.yml ファイルでは、コンフィギュレーションカスケードのメカニズムがはたらいており、定数を定義することができます。

名前つきフィルタの定義リストが filters.yml ファイルに用意されています。

FILTER_1:
  # フィルタ1の定義
 
FILTER_2:
  # フィルタ2の定義
 
# ...

コントローラがリクエストに応じてフィルタチェーンを初期化するとき、filters.yml ファイルが読み込まれ、フィルタのクラス名 (class) とフィルタオブジェクトを初期化する際に使われるパラメータ (param) が探索され、フィルタが登録されます。

FILTER_NAME:
  class: CLASS_NAME
  param: { ARRAY OF PARAMETERS }

フィルタは設定ファイルで定義されている順番で実行されます。複数のフィルタは1つのチェーンとして実行されるので、最初に登録されるフィルタは最初と最後に実行されます。

class クラスは sfFilter 基底クラスを継承しなければなりません。

フィルタクラスがオートロードされていなければ、file パスが定義され、フィルタオブジェクトが作られる前に自動的にインクルードされます。

FACTORY_NAME:
  class: CLASS_NAME
  file:  ABSOLUTE_PATH_TO_FILE

filters.yml ファイルをオーバーライドする場合、継承するファイルからすべてのフィルタを守らなければなりません。

rendering: ~
security:  ~
cache:     ~
execution: ~

フィルタを除外するには、enabled キーに false をセットして無効にする必要があります。

FACTORY_NAME:
  enabled: false

特殊なフィルタが2つ用意されています (renderingexecution)。これらのフィルタは両方とも必須で、type パラメータで指定します。最初に登録されるのはつねに rendering フィルタで、最後に登録されるのは execution フィルタです。

rendering:
  class: sfRenderingFilter
  param:
    type: rendering
 
# ...
 
execution:
  class:  sfExecutionFilter
  param:
    type: execution

note

filters.yml ファイルのキャッシュは PHP ファイルとして保存されます。処理は sfFilterConfigHandler クラスにゆだねられます。

フィルタ

rendering

デフォルトコンフィギュレーション:

rendering:
  class: sfRenderingFilter
  param:
    type: rendering

rendering フィルタはブラウザへのレスポンス出力を受け持ちます。このフィルタは最初に登録されるフィルタであり、リクエストを操作する機会をもつ最後のフィルタでもあります。

security

デフォルトコンフィギュレーション:

security:
   class: sfBasicSecurityFilter
   param:
     type: security

security フィルタはアクションの getCredential() メソッドを呼び出してセキュリティをチェックします。いったんクレデンシャルを得られたら、ユーザーオブジェクトの hasCredential() メソッドを呼び出して、ユーザーが同じクレデンシャルをもっていることを確認できます。

security フィルタのデータ型は security でなければなりません。

security フィルタのコンフィギュレーションをきめ細かく調整する場所は security.yml ファイルです。

tip

security.yml ファイルのなかで必須のアクションにアクセス制限がかけられていない場合、security フィルタは実行されません。

cache

デフォルトコンフィギュレーション:

cache:
  class: sfCacheFilter
  param:
    condition: %SF_CACHE%

cache フィルタはアクションとページを管理します。このフィルタは必要な HTTP キャッシュヘッダーをレスポンスに追加する仕事も受け持ちます (Last-ModifiedETagCache-ControlExpires、・・・)。

execution

デフォルトコンフィギュレーション:

execution:
  class:  sfExecutionFilter
  param:
    type: execution

execution フィルタはフィルタチェーンのまんなかにあり、すべてのアクションとビューの実行を担います。

execution フィルタは最後に登録されるフィルタになります。