如何将Yii2 kartik-v网格DataColumn扩展为BooleanColumn?

问题描述 投票:0回答:1

当前:

型号:ProductSearch

<?php
    namespace frontend\models;

    use yii\base\Model;
    use yii\data\ActiveDataProvider;
    use frontend\models\Product;

    class ProductSearch extends Product
    {
      public function rules()
      {
        return [
        [['id','productcategory_id', 'productsubcategory_id'], 'integer'],
        [['name', 'surname','frequency','contactmobile', 'gc_number','specialrequest', 
          'sellstartdate', 'sellenddate', 'discontinueddate', 'modifieddate'], 'safe'],
        [['listprice'], 'number'],
        [['isactive'],'boolean'],
        ];
      }

      public function scenarios()
      {
         return Model::scenarios();
      }

      public function search($params)
      {
         $query = Product::find();

         $dataProvider = new ActiveDataProvider([
          'pagination' => ['pageSize' => 10],
          'query' => $query,
          'db'=> \frontend\components\Utilities::userdb(),
         ]);

         $this->load($params);
         if (!$this->validate()) {
            return $dataProvider;
         }

         $dataProvider->sort->attributes['productcategory_id'] = [
         'asc' => ['productcategory_id' => SORT_ASC],
         'desc' => ['productcategory_id' => SORT_DESC],
         ];
         $dataProvider->sort->attributes['productsubcategory_id'] = [
         'asc' => ['productsubcategory_id' => SORT_ASC],
         'desc' => ['productsubcategory_id' => SORT_DESC],
         ];

         $query->andFilterWhere([
            'id' => $this->id,
            'listprice' => $this->listprice,
            'isactive'=>$this->isactive,
            'productcategory_id' => $this->productcategory_id,
            'productsubcategory_id' => $this->productsubcategory_id,
            'frequency'=>$this->frequency,
            'name'=>$this->name,
            'surname'=>$this->surname,
            'gc_number'=>$this->gc_number,
            'sellstartdate' => $this->sellstartdate,
            'sellenddate' => $this->sellenddate,
            'discontinueddate' => $this->discontinueddate,
            'modifieddate' => $this->modifieddate,
        ])
        ->all();
        return $dataProvider;
    }
}

当前网格图片和代码

enter image description here

[
 'class' => 'kartik\grid\DataColumn',
 'attribute'=>'isactive',
 'value' => function ($dataProvider) {
                return $dataProvider->isactive; 
        },
 'filter'=>Html::activeCheckbox($searchModel,'isactive',ArrayHelper::map(Product::find()->indexBy('isactive')->asArray()->all(),'isactive','isactive'),[ 'options' => ['style'=> 'font-size:'.Yii::$app->session['sliderfontproduct'].'px']]),
 'filterType'=>GridView::FILTER_CHECKBOX,
 'filterInputOptions' => [
              'options' => ['style'=> 'font-size:'.Yii::$app->session['sliderfontproduct'].'px'],
              'label'=>'',
 ],
 'filterWidgetOptions'=>[
              'options' => ['style'=> 'font-size:'.Yii::$app->session['sliderfontproduct'].'px'],
              'type'=>\kartik\switchinput\Switchinput::CHECKBOX
 ],               
],


<?php 
    echo kartik\grid\GridView::widget([
    'dataProvider' => $dataProvider,
    'filterModel' => $searchModel,
    'columns' => $gridColumns,
    'bootstrap'=>true,
    'options' => ['style'=> 'font-size:'.Yii::$app->session['sliderfontproduct'].'px'],
    'containerOptions' => ['style'=>'overflow: auto'], 
    'pjax' => true,
    'pjaxSettings' =>[
                      'neverTimeout'=>true,
                      'options'=>['id'=>'kv-unique-id-7'],                      
                     ], 
    'responsiveWrap'=>true,
    'bordered' => true,    
    'striped' => true,
    'condensed' => true,
    'responsive' => true,
    'hover' => true,
    'floatHeader' => false,
    'showPageSummary' => true,
    'panel' => [
    'type' => GridView::TYPE_PRIMARY,
    'heading'=> $comptel,
    ],
    'exportConfig' => [
                   GridView::CSV => ['label' => Yii::t('app','Export as CSV'),'config' => 
$config_array, 'filename' => 'Houses_Printed_'.date('d-M-Y')],
                   GridView::HTML => ['label' => Yii::t('app','Export as HTML'),'config' => 
$config_array, 'filename' => 'Houses_Printed_'.date('d-M-Y')],
                   GridView::PDF => [ 'label' => Yii::t('app','Export as PDF'),'config' => 
$config_array, 'filename' => 'Houses_Printed_'.date('d-M-Y')], 
                   GridView::EXCEL=> ['label' => Yii::t('app','Export as EXCEL'), 'filename' => 
'Houses_Printed_'.date('d-M-Y')],
                   GridView::TEXT=> ['label' => Yii::t('app','Export as TEXT'), 'filename' => 
'Houses_Printed_'.date('d-M-Y')],
                 ],
]);
?>

如果将格式更改为'boolean',我得到的是,但是我希望看到刻度或十字的图像。在“是”上打勾,在“否”上打叉。

鉴于上述代码,我该如何完成?我的数据进行了很好的过滤,因此,如果我在活动状态下的复选框列中进行选中,它会显示零或一个。

yii2 grid boolean kartik-v datacolumn
1个回答
0
投票

我设法通过将类名更改为布尔值来解决此问题。 BooleanColumn从DataColumn扩展。我删除了:

'format' => 'boolean'

也是。即使kartik \ grid \ BooleanColumn中的过滤器是自动生成的,它也会为我想要的所有内容生成以下输出:

enter image description here

这是我的最终代码:

[
 'class' => 'kartik\grid\BooleanColumn',
 'attribute'=>'isactive',
 'value' => function ($dataProvider) {
                return $dataProvider->isactive; 
        },
 'filter'=>Html::activeCheckbox($searchModel,'isactive',ArrayHelper::map(Product::find()->indexBy('isactive')->asArray()->all(),'isactive','isactive'),[ 'options' => ['style'=> 'font-size:'.Yii::$app->session['sliderfontproduct'].'px']]),
 'filterType'=>GridView::FILTER_CHECKBOX,
 'filterInputOptions' => [
              'options' => ['style'=> 'font-size:'.Yii::$app->session['sliderfontproduct'].'px'],
              'label'=>'',
 ],
 'filterWidgetOptions'=>[
              'options' => ['style'=> 'font-size:'.Yii::$app->session['sliderfontproduct'].'px'],
              'type'=>\kartik\switchinput\Switchinput::CHECKBOX
 ],               
], 
© www.soinside.com 2019 - 2024. All rights reserved.