我正在建立一个小型网店。这家商店有种类和产品。一个产品可以有多个类别。在productpage中,breadcrumb路径显示引用的类别名称(通过urlReferrer)。
我试图让Yii使用OutputCache逐页缓存,这取决于引用者(类别,因为这会改变面包屑轨迹)。
这是我的非工作过滤器:
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'),
),
)
);
}
有人对此有好办法吗?
致以最良好的问候,谢谢!
'varyByExpression'参数应该是PHP表达式(将由eval评估)或PHP回调(将由call_user_func_array()评估)
如果您使用php>=5.4.0,请尝试以下操作:
'varyByExpression' => function(){return $this->getReferringCategory();},
或者像这样,对于旧版本:
'varyByExpression' => '$this->getReferringCategory()',