123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- <?php
- namespace backend\widgets\grid;
- use backend\assets\SwitcherAsset;
- use yii\grid\DataColumn;
- use yii\helpers\Html;
- use common\enums\StatusEnum;
- use yii\helpers\Url;
- class SwitcherColumn extends DataColumn
- {
- public $reload = 0; //切换后是否重新加载页面,1重新加载,0不重新加载
- public $route = ['switcher'];
- public $onVal = StatusEnum::STATUS_ON; //开启的值
- public $offVal = StatusEnum::STATUS_OFF; //关闭的值
- public function registerClientScript()
- {
- SwitcherAsset::register($this->grid->view);
- $js = <<<'EOT'
- $('.js-switch').on('change', function(){
- var switchery = $(this).data("switchery");
- switchery.disable();
- var url = $(this).data("url");
- var reload = $(this).data("reload");
- var checked = $(this).is(':checked') ? $(this).data("on"): $(this).data("off");
- var data = $(this).data("params");
- data.value = checked;
- $.post( url, data, function(response){
- if(response.status == false){
- $.modal.error(response.msg);
- return;
- }
- if(reload){
- location.reload();
- }else{
- $.modal.success(response.msg);
- switchery.enable();
- }
- });
- });
- EOT;
- $this->grid->view->registerJs($js,\yii\web\View::POS_READY); //因为可能会被pjax加载所以放在这里
- }
- /**
- * @inheritdoc
- */
- protected function renderDataCellContent($model, $key, $index)
- {
- $params = is_array($key) ? $key : ['id' => (string) $key];
- $params["attribute"] = $this->attribute;
- $value = $this->getDataCellValue($model, $key, $index) ;
- if(is_string($value)) {
- $result = $value;
- } else {
- $this->registerClientScript();
- $result = Html::checkbox('', $value == $this->onVal, [
- 'class' => 'js-switch',
- 'data-url' => Url::to($this->route),
- 'data-params' => $params,
- 'data-reload' => $this->reload,
- 'data-toggle' => 'switcher',
- 'data-on' => $this->onVal,
- 'data-off' => $this->offVal,
- ]);
- }
- return $result;
- }
- }
|