2013-07-20 2 views
1

Я строю небольшой интернет-магазин. В этом магазине есть категории и продукты. 1 продукт может иметь несколько категорий. На странице продукта в виде палитры курсора отображается ссылочная категория-имя (через urlReferrer).yii cache dependency referrer

Im пытается получить 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' должно быть выражение PHP (он будет оцениваться Eval) или PHP обратный вызов (будет оцениваться call_user_func_array())

если вы используете PHP> = 5.4.0, попробовать что-то вроде это:

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

Или как это, для более старых версий:

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