包
1.0
2021-01-27 18:03 UTC
Requires
- php: >=7.0.0
- kartik-v/yii2-krajee-base: *
- yiisoft/yii2: 2.*
This package is auto-updated.
Last update: 2024-09-28 05:07:29 UTC
README
基本使用需要
在GridView组件的代码中,在启动时添加以下代码
if ($this->freezed && $this->freezeOptions) {
$freezeOptions = Json::htmlEncode(array_merge($this->freezeOptions, ['container' => "#{$id}-container"]));
FreezeAsset::register($view);
$view->registerJs("jQuery('#$id-container').freezeGridView('init', $freezeOptions);");
}
例如,在您项目中使用由kartik继承的GridView组件中。
还需要给这个组件添加必要的属性
/**
* Включение закрепления колонок
* @var bool
*/
public $freezed = true;
/**
* Параметры закрепления (перечислить колонки, которые надо закрепить)
* @var array
*
* ```php
* $this->freezeOptions = [
* 'freezeLeftColumns' => ['id', 'name', ...]
* 'freezeRightColumns' => ['id', 'name', ...]
* ]
* ```
*/
public $freezeOptions = [];
我们将处理列并在SearchModel中形成数组,具体来说是在基础模型中,以便方法可以在任何地方使用或使用trait,这样更方便。因此,我们添加所需的方法
/**
* Возвращает настройки для закрепления
* @return array
*/
public function getFreezeOptions() : array
{
return [
'freezeLeftColumns' => $this->getFreezeLeftColumns(),
'freezeRightColumns' => $this->getFreezeRightColumns()
];
}
getFreezeLeftColumns和getFreezeRightColumns方法没有在文档中列出,因为它们因人而异。但原理是这样的 - 这些方法应该返回需要固定的列名。如何保存这些信息则由每个人自行决定。我是在数据库中实现的,有人可能使用cookies或session。
您可以这样使用它
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => $searchModel->getGridColumns(),
'freezeOptions' => $searchModel->getFreezeOptions(),
])?>