filters.yml設定ファイルはすべてのリクエストで実行されるフィルターチェーンを記述します。
アプリケーション用のメインのfilters.yml設定ファイルはapps/APP_NAME/config/ディレクトリで見つかります。
はじめの章で説明したように、filters.ymlファイルはコンフィギュレーションカスケードのメカニズムが有効で、定数を格納することができます。
filters.yml設定ファイルは名前つきフィルター定義のリストを格納できます:
FILTER_1: # definition of filter 1 FILTER_2: # definition of filter 2 # ...
コントローラーがリクエストに対してフィルターを初期化するとき、filters.ymlファイルを読み込みフィルターオブジェクトを設定するために使われるフィルター(class)とパラメーター(param)のクラス名を探すことでフィルターを登録します:
FILTER_NAME:
class: CLASS_NAME
param: { ARRAY OF PARAMETERS }
フィルターは設定ファイルで記述されている順序で実行されます。 symfonyは複数のフィルターを1つのチェーンとして実行するので、最初に登録されたフィルターは最初と最後に実行されます。
classクラスはsfFilter基底クラスを継承します。
フィルタークラスがオートロードできない場合、fileパスを定義することが可能でフィルターオブジェクトが作られる前に自動的にインクルードされます:
FACTORY_NAME: class: CLASS_NAME file: ABSOLUTE_PATH_TO_FILE
filters.ymlファイルをオーバーライドするとき、継承する設定ファイルからすべてのフィルターを維持しなければなりません:
rendering: ~ security: ~ cache: ~ common: ~ execution: ~
フィルターを除外するには、enabledキーをfalseにセットすることでこれを無効にする必要があります:
FACTORY_NAME: enabled: false
2つの特別な名前のフィルター: renderingとexecutionがあります。
これらは両方とも必須で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-Modified、ETag、Cache-Control、Expires、・・・)。
common
デフォルトコンフィギュレーション:
common: class: sfCommonFilter
commonフィルターはJavaScriptとスタイルシートがすでにインクルードされていない場合メインのレスポンスにこれらを追加します。
tip
レイアウトでinclude_stylesheets()とinclude_javascripts()ヘルパーを使う場合、このフィルターを安全に無効化することが可能で、小さなパフォーマンスの恩恵を受けます。
execution
デフォルトコンフィギュレーション:
execution:
class: sfExecutionFilter
param:
type: execution
executionフィルターはフィルターチェーンのまんなかにあり、すべてのアクションとビューの実行を行います。
executionフィルターは最後に登録されたフィルターになります。
This work is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported License license.