http://www.yiiframework.com/doc-2.0/guide-caching-fragment.html
我的代码是:
$dependency = [
'class' => 'yii\caching\DbDependency',
'sql' => 'SELECT MAX(updated_at) FROM converter_operator_device;',
];
$variations = [
[\Yii::$app->request->absoluteUrl, \Yii::$app->user->isGuest],
];
if ($this->beginCache('table-connection',['dependency' => $dependency, 'variations' => $variations])) {
// here gridView.
}
当片段缓存时,GridView的过滤器不起作用,因为需要js GridView。如何解决?
UPD: 我在缓存代码之前添加:
$this->registerJs("$('#table-connection').yiiGridView({'filterUrl':document.URL,'filterSelector':'#table-connection-filters input, #table-connection-filters select'})");
GridViewAsset::register($this);
这可行,但如何跟踪缓存加载?
答案 0 :(得分:0)
有趣的一个:),尝试在if之后注册所需的JS。因此,如果您的依赖项失败,则包含GridView,如果它们没有失败,您将使用包含JS文件的HTML来使其工作。
答案 1 :(得分:0)
registerJs在Gridview函数“run()”中执行 也许你可以像下面这样分割gridview:
$grid = new GridView([
'layout'=> "{summary}",
]);
echo $grid->run();
if ($this->beginCache('id')) {
echo $grid->renderItems();
$this->endCache();
}
在我的情况下,我只在gridview中启用排序,它对我有用。