kartik-v/yii2-grid

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

在win7下

  1. 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

  1. 'kartik-v/yii2-krajee-base' =>
  2. array (
  3. 'name' => 'kartik-v/yii2-krajee-base',
  4. 'version' => '1.8.1.0',
  5. 'alias' =>
  6. array (
  7. '@kartik/base' => $vendorDir . '/kartik-v/yii2-krajee-base',
  8. ),
  9. ),
  10. 'kartik-v/yii2-grid' =>
  11. array (
  12. 'name' => 'kartik-v/yii2-grid',
  13. 'version' => '2.7.0',
  14. 'alias' =>
  15. array (
  16. '@kartik/grid' => $vendorDir . '/kartik-v/yii2-grid',
  17. ),
  18. ),
  19. 'kartik-v/yii2-export' =>
  20. array (
  21. 'name' => 'kartik-v/yii2-export',
  22. 'version' => 'v1.2.0',
  23. 'alias' =>
  24. array (
  25. '@kartik/export' => $vendorDir . '/kartik-v/yii2-export',
  26. ),
  27. ),
  28. 'kartik-v/yii2-mpdf' =>
  29. array (
  30. 'name' => 'kartik-v/yii2-mpdf',
  31. 'version' => 'v3.3.0',
  32. 'alias' =>
  33. array (
  34. '@kartik/mpdf' => $vendorDir . '/kartik-v/yii2-mpdf',
  35. ),
  36. ),

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

去github下载,mpdf,放到vender下

在vendor\composer\autoload_namespaces.php添加

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

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

  1. 'modules' => [
  2. 'gridview'=>[
  3. 'class' => '\kartik\grid\Module',
  4. 'downloadAction' => 'gridview/export/download',
  5. 'i18n'=>[
  6. 'class' => 'yii\i18n\PhpMessageSource',
  7. 'basePath' => '@kvgrid/messages',
  8. 'forceTranslation' => true
  9. ]
  10. ]
  11. ],

(2)使用

Orders、Custom通过uid关联

在Orders中

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

去写OrderSearch去继承Orders表

  1. class OrderSearch extends Orders
  2. {
  3. public $tel,$trade_type,$pay_type;
  4. public function rules()
  5. {
  6. return [
  7. //省略
  8. ['tel','safe'] //添加后才能搜索
  9. ];
  10. }
  11.   //省略
  12. public function search($params)
  13. {
  14. $query = Orders::find();
  15. $query->joinWith(['custom']);//添加
  16. $dataProvider = new ActiveDataProvider([
  17. 'query' => $query,
  18. ]);
  19. $dataProvider->setSort([ //添加-----排序
  20. 'attributes' => [
  21. 'tel' => [
  22. 'asc' => [Custom::tableName().'.tel' => SORT_ASC],
  23. 'desc' => [Custom::tableName().'.tel' => SORT_DESC],
  24. 'label' => '手机号'
  25. ],'create_time'=>[],
  26. ]
  27. ]);
  28. $this->load($params);
  29.  
  30. if (!$this->validate()) {
  31. return $dataProvider;
  32. }
  33. $query->andFilterWhere([
  34. 'id' => $this->id,
  35. 'uid' => $this->uid,'create_time' => $this->create_time,
  36. ]);
  37.      //省略
  38. $query->andFilterWhere(['like', Custom::tableName().'.tel', $this->tel]) ;//搜索 return $dataProvider;
  39. }
  40. }

Controller代码

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

View中

  1. <?php
  2. use yii\helpers\Html;
  3. use kartik\grid\GridView;?>
  4. <div class="user-index">
  5. <?= GridView::widget([
  6. 'panel'=>['type'=>'primary', 'heading'=>'表头'],
  7. 'dataProvider' => $dataProvider,
  8. 'filterModel'=>$searchModel,
  9. 'showPageSummary'=>true, //显示统计
  10. 'columns' => [
  11. ['class'=>'kartik\grid\SerialColumn'],
  12. [
  13. 'attribute' => 'tel',
  14. 'value' => 'custom.tel',
  15. 'filter'=>Html::activeTextInput($searchModel, 'tel',['class'=>'form-control']),//添加搜索框
  16. 'label'=>'手机号',
  17. 'pageSummary'=>'总计',
  18. 'pageSummaryOptions'=>['class'=>'text-right text-warning'],
  19. ],
  20. [
  21. 'attribute'=>'paid',
  22. 'format'=>['decimal', ],
  23. 'pageSummary'=>true,
  24. ],
  25.  
  26. ],
  27. 'tableOptions'=>['class' => 'table table-hover'],
  28. 'toolbar'=>[
  29. '{toggleData}',
  30. '{export}',
  31. ],
  32. 'exportConfig'=>[
  33. GridView::HTML => [],
  34. GridView::PDF => [],
  1.        GridView::CSV => [],
  1. ], ]); ?> </div>

(3)PDF下载乱码问题

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

  1. protected function generatePDF($content, $filename, $config = [])
  2. {
  3. unset($config['contentBefore'], $config['contentAfter']);
  4. $config['filename'] = $filename;
  5. $config['mode']=Pdf::MODE_UTF8;//需要核心字库
  6. $config['methods']['SetAuthor'] = ['Krajee Solutions'];
  7. $config['methods']['SetHeader']=['页眉'];
  8. $config['methods']['SetFooter']=['页脚'];
  9. $config['methods']['SetCreator'] = ['Krajee Yii2 Grid Export Extension'];
  10. $config['content'] = $content;
  11. $config['options']=['title' => '中文',
  12. 'autoLangToFont' => true, //这几个配置加上可以显示中文
  13. 'autoScriptToLang' => true, //这几个配置加上可以显示中文
  14. 'autoVietnamese' => true, //这几个配置加上可以显示中文
  15. 'autoArabic' => true, //这几个配置加上可以显示中文
  16. ];
  17. $pdf = new Pdf($config);
  18. echo $pdf->render();
  19. }

核心字库在vendor\mpdf\ttfonts下

(3)CSV下载乱码问题

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

GridView联表搜索,排序的更多相关文章

  1. MySQL的选则字段+联表+判断+排序(order by)

    MySQL的选则字段+联表+判断+排序(order by) 两个表:1.成绩单 2.查询名单 目标: 1.选中全部字段,用于输出. 2.成绩单中有很多人的成绩,第一步是希望通过联表,只查查询名单上的人 ...

  2. Yii CGridView 关联表搜索排序实例

    在这篇文章中,我准备讲解如何在CGridView中搜索或者排序关联表中的某一行,通过给Yii Blog demo添加一个list页面. 首先,检查你的blog demo里的protected\mode ...

  3. Mysql数据库表排序规则不一致导致联表查询,索引不起作用问题

    Mysql数据库表排序规则不一致导致联表查询,索引不起作用问题 表更描述: 将mysql数据库中的worktask表添加ishaspic字段. 具体操作:(1)数据库worktask表新添是否有图片字 ...

  4. 解决MySQL联表时出现字符集不一样

    mysql 建表时都会设置表的字符集和排序规则,通常是 utf8,不过我这边习惯建表的字符集是 utf8mb4,排序规则是 utf8mb4_unicode_ci.有些 utf8mb4 的表默认排序规则 ...

  5. 关于ORACLE的SQL语句拼接、替换、截取、排序,联表等...~持续汇总~

     先看一下所有的数据.这里全部为VARCHAR2(255). 字段拼接 在所有的性别后面加% 字段替换,把性别TPF_SEX去除百分号% 字段截取 字段截取+拼接 字段替换,这里把百分号%替换为空,也 ...

  6. YII关联字段并带搜索排序功能

    1.简介 从接触yii框架到现在已经快有两个月了,但是自己对yii框架的了解程度并不是很深,并没有系统地去学习,仅仅只是在做项目的时候遇到不懂得知识才去翻手册. 在上一个项目中因为需要将关联的表的字段 ...

  7. MyBatis联表查询

    MyBatis逆向工程主要用于单表操作,那么需要进行联表操作时,往往需要我们自己去写sql语句. 写sql语句之前,我们先修改一下实体类 Course.java: public class Cours ...

  8. SQL语句分组排序,多表关联排序

    SQL语句分组排序,多表关联排序总结几种常见的方法: 案例一: 在查询结果中按人数降序排列,若人数相同,则按课程号升序排列? 分析:单个表内的多个字段排序,一般可以直接用逗号分割实现. select ...

  9. [慢查优化]联表查询注意谁是驱动表 & 你搞不清楚谁join谁更好时请放手让mysql自行判定

    写在前面的话: 不要求每个人一定理解 联表查询(join/left join/inner join等)时的mysql运算过程: 不要求每个人一定知道线上(现在或未来)哪张表数据量大,哪张表数据量小: ...

随机推荐

  1. UIScrollView创建相册

    1.设置滚动相册 1.1将存放图片数组传过来,及当前图片的索引 1.2在控制器中创建ScrollView,设置它的contentSize,contentOffset. 1.3通过传过来的图片数组创建U ...

  2. c# HttpClient禁止缓存

    using (var client = new HttpClient())             {                //方法1:                 CacheContr ...

  3. 两个经典的Oracle触发器示例(轉)

    [案例一] 题目:--触发器:--添加员工信息,流水号作为自动编号(通过序列生成),--并且判断如果工资小于0,则改为0;如果大于10000,则改为10000. CREATE TABLE emp2(e ...

  4. DEDECMS之二 如何修改模板页

    使用织梦系统最经常是为了仿站,那么模板应该怎么改? 这里主要谈谈关于比较常用的几个模板页 网站主页.列表页.内容页.栏目的调用 1.主页模板 常用组合方法:index.htm + head.htm + ...

  5. Unicode字符列表(超完整)

    Unicode字符列表(超完整)Unicode, 字符, 列表代码 显示 描述U+0020  空格 U+0021 ! 叹号 U+0022 " 双引号 U+0023 # 井号 U+0024 $ ...

  6. I/O 流和对象序列化

    一.I/O 流(java 如何实现与外界数据的交流) 流定义: 任何有能力产出数据的数据源对象或者有能力接收数据的数据源对象.他屏蔽了实际的I/O设备处理数据的细节. 1.Input/Output:指 ...

  7. grunt使用入门(zz)

    下面介绍grunt的基本使用方法,把前端项目中的对个js文件,合并到一起,并压缩. 注意,例子用的是grunt 0.4.5版本,低版本可能在配置上有所不同. 工具/原料 node 方法/步骤 首先用n ...

  8. python网络编程学习《一》

    最近,刚实习完,很喜欢实验楼,但是自己的方向仍然不能确定,自己觉得可选择的空间很大,尽管已经是大四的人了,想到别人都在忙着买职业装,买高跟鞋面试,学习化妆什么的,看看自己,反而开始慢慢关注运动,食疗以 ...

  9. who命令的总结

    who命令能做什么 who命令用来查看谁登录了系统(show who is logged on ): 每一行代表一个巳经登录的用户,第1列是用户名,第2列是终端名,第3列是登录时间. 通过whatis ...

  10. HoloLens开发手记 - Unity之Recommended settings 推荐设置

    Unity提供了大量的设置选项来满足全平台的配置,对于HoloLens,Unity可以通过切换一些特定的设置来启用HoloLens特定的行为. Holographic splash screen 闪屏 ...