1

我想在我的控制器中仅缓存指定的操作,我如何指定使用该过滤器?

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

信息:

上述过滤器配置将使过滤器应用于控制器中的所有操作。我们可以仅通过使用加号运算符将其限制为一个或几个动作。更多细节可以在过滤器中找到。

但我不知道如何使用它=/

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'),

)

要使用+-取决于哪个集合更小要指定,例如从 10 个动作中您想要将过滤器应用于除 2 个动作之外的所有动作,然后用于-指示过滤器不应该应用于的 2 个动作。但是,如果您想从 10 个操作中仅对 2 个操作应用过滤器,则使用+.


注意:如果你想知道actionId,它是在action之后的字符串public function actionHelloWorld(){...},所以在这个例子中是helloWorld

于 2012-11-03T07:36:40.187 回答