我想只在控制器中缓存指定的操作,如何使用该过滤器指定?
public function filters()
{
return array('accessControl',
array(
'COutputCache',
'duration'=>100,
'varyByParam'=>array('id'),
),
);
}
信息:
上述过滤器配置将使过滤器应用于控制器中的所有操作。我们可以仅使用加号运算符将其限制为一个或几个动作。更多细节可以在过滤器中找到。
但我不知道如何使用= /
答案 0 :(得分: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
。