2012-11-02 49 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