1

指定したアクションのみをコントローラーにキャッシュしたいのですが、そのフィルターを使用して指定するにはどうすればよいですか?

public function filters()
{
    return array('accessControl',
                array(
                    'COutputCache',
                    'duration'=>100,
                    'varyByParam'=>array('id'),
                ),
            );
}

情報:

上記のフィルター構成により、フィルターはコントローラー内のすべてのアクションに適用されます。プラス演算子を使用することによってのみ、1つまたはいくつかのアクションに制限する場合があります。詳細については、フィルターをご覧ください。

しかし、私はそれを使用する方法がわかりません= /

4

1 に答える 1

0

実際には非常に簡単です。ガイドを参照してください

プラス演算子とマイナス演算子を使用して、フィルターを適用するアクションと適用しないアクションを指定できます。上記では、postOnlyフィルターは編集および作成アクションに適用され、PerformanceFilterフィルターは編集および作成を除くすべてのアクションに適用されます。フィルタ構成にプラスもマイナスも表示されない場合、フィルタはすべてのアクションに適用されます。

したがって、コードは次のようになります。

array(
    'COutputCache + actionId, actionId2', // applies filter to only actions actionId and actionId2
    'duration'=>100,
    'varyByParam'=>array('id'),
),

または、actionIdとactionId2を除くすべてのアクションにフィルターを適用する場合:

array(
    'COutputCache - actionId, actionId2', // applies filter to all actions except actions actionId and actionId2
    'duration'=>100,
    'varyByParam'=>array('id'),

)

どのセットを使用する+か、または-どのセットを指定するかによって異なります。たとえば、2つのアクションを除くすべてにフィルターを適用する10のアクションから-、フィルターを適用しない2つのアクションを示すために使用します。ただし、10個のアクションから2個のアクションのみにフィルターを適用する場合は、を使用します+


注:actionIdを知りたい場合は、のアクションの後の文字列でpublic function actionHelloWorld(){...}あるため、この例では。ですhelloWorld

于 2012-11-03T07:36:40.187 に答える