【问题标题】:How do I extend a Yii2 kartik-v grid DataColumn to a BooleanColumn?如何将 Yii2 kartik-v 网格 DataColumn 扩展为 BooleanColumn?
【发布时间】:2020-09-18 03:06:08
【问题描述】:

目前:

型号: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;
    }
}

当前网格图片和代码

[
 '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')],
                 ],
]);
?>

如果我将格式更改为“布尔”,我会得到肯定的结果,但是我更愿意看到勾号或十字的图像。打勾表示是,十字表示否。

根据上面的代码,我该如何完成?我的数据过滤得很好,因此如果我选中活动下的复选框列,它会显示零或一。

【问题讨论】:

    标签: yii2 grid boolean kartik-v datacolumn


    【解决方案1】:

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

    'format' => 'boolean'
    

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

    这是我的最终代码:

    [
     '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
     ],               
    ], 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多