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.