2012-11-02 51 views
1

我想只在控制器中緩存指定的操作,如何指定使用該過濾器?Yii緩存過濾器指定操作

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

INFO:

上述過濾器配置會使過濾器被應用到在所述控制器的所有操作。我們可能會將其限制爲僅使用加號運算符的一個或幾個動作。更多細節可以在過濾器中找到。

但我不知道如何使用=/

回答

0

這是很簡單其實,看到the guide

使用加號和減號的運營商,我們可以指定哪些動作過濾器應和應不適用於。在上面,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'), 

) 

要使用+-取決於哪個集合更小以指定,就像從10個動作中除去2個動作一樣,然後使用-來指示過濾器應該執行的2個動作不適用於。但是,如果從10個操作開始,您只想將過濾器應用於2個操作,則使用+


注:櫃面你想知道actionId,它是在public function actionHelloWorld(){...}行動後的字符串,因此在本例中爲helloWorld