GridView联表搜索,排序

kartik-v/yii2-grid

文档http://demos.krajee.com/grid

在win7下

 composer  require kartik-v/yii2-grid "@dev"

在vender下多了kartik-v,kartik-v下yii2-export,yii2-grid,yii2-krajee-base,yii2-mpdf

还修改了,vendor\yiisoft\extensions.php

 'kartik-v/yii2-krajee-base' => 
  array (
    'name' => 'kartik-v/yii2-krajee-base',
    'version' => '1.8.1.0',
    'alias' => 
    array (
      '@kartik/base' => $vendorDir . '/kartik-v/yii2-krajee-base',
    ),
  ),
  'kartik-v/yii2-grid' => 
  array (
    'name' => 'kartik-v/yii2-grid',
    'version' => '2.7.0',
    'alias' => 
    array (
      '@kartik/grid' => $vendorDir . '/kartik-v/yii2-grid',
    ),
  ),
  'kartik-v/yii2-export' => 
  array (
    'name' => 'kartik-v/yii2-export',
    'version' => 'v1.2.0',
    'alias' => 
    array (
      '@kartik/export' => $vendorDir . '/kartik-v/yii2-export',
    ),
  ),
  'kartik-v/yii2-mpdf' => 
  array (
    'name' => 'kartik-v/yii2-mpdf',
    'version' => 'v3.3.0',
    'alias' => 
    array (
      '@kartik/mpdf' => $vendorDir . '/kartik-v/yii2-mpdf',
    ),
  ),

 

但是当保存文件为PDF还会提示错误,它还需要mpdf

去github下载,mpdf,放到vender下

在vendor\composer\autoload_namespaces.php添加

'mPDF' => array($vendorDir . '/mpdf'),

(1)在在配置文件main.php(使用的是yii advance)添加

'modules' => [
        'gridview'=>[
            'class' => '\kartik\grid\Module',
            'downloadAction' => 'gridview/export/download',
            'i18n'=>[    
                    'class' => 'yii\i18n\PhpMessageSource',
                    'basePath' => '@kvgrid/messages',
                    'forceTranslation' => true
                ]
            ]
        ],

(2)使用

Orders、Custom通过uid关联

在Orders中

public function getCustom() {
        return $this->hasOne(Custom::className(), ['id' => 'uid']);
}

去写OrderSearch去继承Orders表

class OrderSearch extends Orders
{
    public $tel,$trade_type,$pay_type;
    public function rules()
    {
        return [
            //省略
            ['tel','safe']  //添加后才能搜索
        ];
    }
  //省略
    public function search($params)
    {
        $query = Orders::find();
        $query->joinWith(['custom']);//添加
        $dataProvider = new ActiveDataProvider([
            'query' => $query,
        ]);
        $dataProvider->setSort([   //添加-----排序
            'attributes' => [
                'tel' => [
                    'asc' => [Custom::tableName().'.tel' => SORT_ASC],
                    'desc' => [Custom::tableName().'.tel' => SORT_DESC],
                    'label' => '手机号'
                ],'create_time'=>[],
            ]
        ]);
        $this->load($params);

        if (!$this->validate()) {
return $dataProvider; } $query->andFilterWhere([ 'id' => $this->id, 'uid' => $this->uid,'create_time' => $this->create_time, ]);      //省略 $query->andFilterWhere(['like', Custom::tableName().'.tel', $this->tel]) ;//搜索 return $dataProvider; } }

Controller代码

public function actionIndex()  
{  
       $searchModel = newOrderSearch();
    $dataProvider
= $searchModel->search(Yii::$app->request->queryParams);
    return $this->render('index', [ 'searchModel' => $searchModel, 'dataProvider' => $dataProvider, ]);
}

View中

php
use yii\helpers\Html;
use kartik\grid\GridView;?>
class="user-index"> GridView::widget([ 'panel'=>['type'=>'primary', 'heading'=>'表头'], 'dataProvider' => $dataProvider, 'filterModel'=>$searchModel, 'showPageSummary'=>true, //显示统计 'columns' => [ ['class'=>'kartik\grid\SerialColumn'], [ 'attribute' => 'tel', 'value' => 'custom.tel', 'filter'=>Html::activeTextInput($searchModel, 'tel',['class'=>'form-control']),//添加搜索框 'label'=>'手机号', 'pageSummary'=>'总计', 'pageSummaryOptions'=>['class'=>'text-right text-warning'], ], [ 'attribute'=>'paid', 'format'=>['decimal', 2], 'pageSummary'=>true, ], ], 'tableOptions'=>['class' => 'table table-hover'], 'toolbar'=>[ '{toggleData}', '{export}', ], 'exportConfig'=>[ GridView::HTML => [], GridView::PDF => [],
       GridView::CSV => [],
], ]); ?> 

(3)PDF下载乱码问题

修改vendor\kartik-v\yii2-grid\controllers下ExportController.php

protected function generatePDF($content, $filename, $config = [])
    {
        unset($config['contentBefore'], $config['contentAfter']);
        $config['filename'] = $filename;
        $config['mode']=Pdf::MODE_UTF8;//需要核心字库
        $config['methods']['SetAuthor'] = ['Krajee Solutions'];
        $config['methods']['SetHeader']=['页眉'];
        $config['methods']['SetFooter']=['页'];
        $config['methods']['SetCreator'] = ['Krajee Yii2 Grid Export Extension'];
        $config['content'] = $content;
        $config['options']=['title' => '中文',
        'autoLangToFont' => true,    //这几个配置加上可以显示中文
        'autoScriptToLang' => true,  //这几个配置加上可以显示中文
        'autoVietnamese' => true,    //这几个配置加上可以显示中文
        'autoArabic' => true,        //这几个配置加上可以显示中文
        ];
        $pdf = new Pdf($config);
        echo $pdf->render();
    }

核心字库在vendor\mpdf\ttfonts下

GridView联表搜索,排序_第1张图片

(3)CSV下载乱码问题

public function actionDownload()
{
    $type = empty($_POST['export_filetype']) ? 'html' : $_POST['export_filetype'];
  //省略
if($type=='csv'){ $content="\xEF\xBB\xBF".$content; //添加BOM头 }   //省略   return $content; }

 

转载于:https://www.cnblogs.com/baby123/p/5090725.html

你可能感兴趣的:(php)