2013-07-20 27 views
1

我正在建立一个小网店。这家商店有类别和产品。 1个产品可以有多个类别。 在产品页面,breadcrumb-path显示引用的类别名称(通过urlReferrer)。yii缓存依赖引用者

我试图让Yii缓存OutputCache的页面,具体取决于引用(这个类别,因为这会改变breadcrump-trail)。

这里是我的非工作过滤器:

public function filters() { 

    return array(
     array(
      'COutputCache', 
      'duration' => 3600, 
      'varyByExpression' => array($this->getReferringCategory()), 
      'varyByParam' => array('id','slug'), 
      'dependency' => array(
       'class' => 'CDbCacheDependency', 
       'sql' => 'SELECT MAX(date_updated) FROM product WHERE product_id = '.Yii::app()->request->getParam('id'), 
      ), 
     ) 
    ); 
} 

是否有人对此有一个很好的方法吗?

此致敬意,谢谢!

+0

在哪个班你有没有'过滤器()'方法? – schmunk

回答

0

'varyByExpression' PARAM应该是一个PHP表达式(它会通过EVAL评估)或者PHP回调

如果您使用PHP> = 5.4.0,尝试像(将由call_user_func_array()进行评估)这样的:

'varyByExpression' => function(){return $this->getReferringCategory();}, 

或者这样,对于旧版本:

'varyByExpression' => '$this->getReferringCategory()',