filters.yml 設定ファイル
すべてのリクエストで実行されるフィルタチェーンは ~filters.yml~ ファイルに記述します。
アプリケーションの filters.yml ファイルは apps/APP_NAME/config/ ディレクトリに配置されています。
設定ファイルの原則の章で述べたように、filters.yml ファイルでは、コンフィギュレーションカスケードのメカニズムがはたらいており、定数を定義することができます。
名前つきフィルタの定義リストが filters.yml ファイルに用意されています。
[yml]
FILTER_1:
# フィルタ1の定義
FILTER_2:
# フィルタ2の定義
# ...
コントローラがリクエストに応じてフィルタチェーンを初期化するとき、filters.yml ファイルが読み込まれ、フィルタのクラス名 (class) とフィルタオブジェクトを初期化する際に使われるパラメータ (param) が探索され、フィルタが登録されます。
[yml]
FILTER_NAME:
class: CLASS_NAME
param: { ARRAY OF PARAMETERS }
フィルタは設定ファイルで定義されている順番で実行されます。複数のフィルタは1つのチェーンとして実行されるので、最初に登録されるフィルタは最初と最後に実行されます。
class クラスは sfFilter 基底クラスを継承しなければなりません。
フィルタクラスがオートロードされていなければ、file パスが定義され、フィルタオブジェクトが作られる前に自動的にインクルードされます。
[yml]
FACTORY_NAME:
class: CLASS_NAME
file: ABSOLUTE_PATH_TO_FILE
filters.yml ファイルをオーバーライドする場合、継承するファイルからすべてのフィルタを守らなければなりません。
[yml]
rendering: ~
security: ~
cache: ~
execution: ~
フィルタを除外するには、enabled キーに false をセットして無効にする必要があります。
[yml]
FACTORY_NAME:
enabled: false
特殊なフィルタが2つ用意されています (rendering と execution)。これらのフィルタは両方とも必須で、type パラメータで指定します。最初に登録されるのはつねに rendering フィルタで、最後に登録されるのは execution フィルタです。
[yml]
rendering:
class: sfRenderingFilter
param:
type: rendering
# ...
execution:
class: sfExecutionFilter
param:
type: execution
NOTE
filters.ymlファイルのキャッシュは PHP ファイルとして保存されます。処理は ~sfFilterConfigHandler~ クラスにゆだねられます。
フィルタ
rendering
デフォルトコンフィギュレーション:
[yml]
rendering:
class: sfRenderingFilter
param:
type: rendering
rendering フィルタはブラウザへのレスポンス出力を受け持ちます。このフィルタは最初に登録されるフィルタであり、リクエストを操作する機会をもつ最後のフィルタでもあります。
security
デフォルトコンフィギュレーション:
[yml]
security:
class: sfBasicSecurityFilter
param:
type: security
security フィルタはアクションの getCredential() メソッドを呼び出してセキュリティをチェックします。いったんクレデンシャルを得られたら、ユーザーオブジェクトの hasCredential() メソッドを呼び出して、ユーザーが同じクレデンシャルをもっていることを確認できます。
security フィルタのデータ型は security でなければなりません。
security フィルタのコンフィギュレーションをきめ細かく調整する場所は security.yml ファイルです。
TIP
security.ymlファイルのなかで必須のアクションにアクセス制限がかけられていない場合、securityフィルタは実行されません。
cache
デフォルトコンフィギュレーション:
[yml]
cache:
class: sfCacheFilter
param:
condition: %SF_CACHE%
cache フィルタはアクションとページを管理します。このフィルタは必要な HTTP キャッシュヘッダーをレスポンスに追加する仕事も受け持ちます (Last-Modified、ETag、Cache-Control、Expires、・・・)。
execution
デフォルトコンフィギュレーション:
[yml]
execution:
class: sfExecutionFilter
param:
type: execution
execution フィルタはフィルタチェーンのまんなかにあり、すべてのアクションとビューの実行を担います。
execution フィルタは最後に登録されるフィルタになります。