Caution: You are browsing the legacy symfony 1.x part of this website.

filters.yml設定ファイル

1.2
Symfony version
1.4
Language

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つの特別な名前のフィルター: 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、・・・)。

common

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

common:
  class: sfCommonFilter

commonフィルターはJavaScriptとスタイルシートがすでにインクルードされていない場合メインのレスポンスにこれらを追加します。

tip

レイアウトでinclude_stylesheets()include_javascripts()ヘルパーを使う場合、このフィルターを安全に無効化することが可能で、小さなパフォーマンスの恩恵を受けます。

execution

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

execution:
  class:  sfExecutionFilter
  param:
    type: execution

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

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