Yii2学习笔记一 GridView
第一次知道Yii框架其实是个偶然。
我刚工作半年,一直是使用国内的ThinkPHP框架,这个框架的好处是对初学者比较友好,学习成本低,不需要知道框架的底层就可以很顺利的完成一个WEB项目。缺点是更改过后的模板引擎支持解析的模板标签深度有限制,比如你如果有很多foreach循环,就必须 知道,超过三层时框架是不解析的。虽然也是使用Smarty模板引擎修改而来,但功能却不如Smarty。
还是一个同学不小心提醒我,他说都不会ThinkPHP框架,我才知道,我就会ThinkPHP框架了。
还在培训学校的时候,有次指导老师来看晚自习,有同学问他这个框架,他说没用过这个框架,不会使。那时候我以为大家都会用这个框架,直到这次以后,我才知道框架还有很多。就像我后来才知道,操作系统不是只有Windows一家一样。在我还刚接触电脑那年,已经大一下学期了。那年我们都还习惯用QQ聊天,手机并没有流行起来,一个很土的nokia都很有档次,我们没有谁会去(ˇ?ˇ) 想,这才几年,诺基亚就和消失了一般。
后来毕业去了学校工作,说起来很可怜,我半年的工资勉强够自己糊口,直到我要走的时候,才买了第一台笔记本电脑。我就尝试使用Gentoo,谁知道那根本不是人玩的,我压根不记得我面对一个黑窗口的表情是有多无奈,只能乖乖的装上Windows来跑。我还是去深圳了才开始买了第一本关于Linux的书《鸟哥的Linux私房菜》,现在这本书网上还在,虽然我感觉有些旧了,但却是我的启蒙读物。
不巧的是,我第一份工作就是使用ThinkPHP框架。就这样用了半年,对框架其实我并不了解,因为根本没用过高级一些的功能,比如重写框架的默认方法。因了同学的提醒,我开始搜集一些关于PHP框架的资料,才知道使用量第一的框架,我从来没听过。后来听一些工作过的人说,这些排名靠前的框架,国内用的很 少。我一直不知道为什么,国外都能使用的框架,为什么我们却觉得不好。也是在教材上看到的,说开源的框架对使用者开源,也对黑客开源,不安全,大公司都是使用自己开发的框架,当然我不知道这句话对不对。
我搜集了传智孙书华老师的Yii视频,完整听完后感觉我有必要学习一个国外的框架。那种思维方式,和我使用ThinkPHP的经验是完全不同的。然后就有了学习Yii框架的这个过程,刚好我要换工作,因为朋友的关系,这家公司正好是使用Yii框架的,就增加了我的珍惜。也很顺利的入职了这家公司。
在公司的第三天,技术总监过来问我,看我写的代码怎么样。他看了我的模板后说,对就是用这个,这个功能很强大,支持使用对象的方式来访问,你好好研究下,他说的是GridView。
1 <?php 2 3 use yii\helpers\Html; 4 use yii\grid\GridView; 5 6 /* @var $this yii\web\View */ 7 /* @var $searchModel backend\models\huangye\ItemSearch */ 8 /* @var $dataProvider yii\data\ActiveDataProvider */ 9 10 $this->title = ‘商铺或服务‘; 11 $this->params[‘breadcrumbs‘][] = $this->title; 12 ?> 13 <div class="item-index"> 14 15 <h1><?= Html::encode($this->title) ?></h1> 16 <?php // echo $this->render(‘_search‘, [‘model‘ => $searchModel]); ?> 17 18 <p> 19 <?= Html::a(‘创建商铺或服务‘, [‘create‘], [‘class‘ => ‘btn btn-success‘]) ?> 20 </p> 21 22 <?= GridView::widget([ 23 ‘dataProvider‘ => $dataProvider, 24 ‘filterModel‘ => $searchModel, 25 ‘columns‘ => [ 26 [‘class‘ => ‘yii\grid\SerialColumn‘], 27 28 [ 29 ‘format‘ => ‘raw‘, 30 ‘label‘ => ‘所属分组‘, 31 ‘value‘ => function($m) { 32 $group = new \backend\models\huangye\Group(); 33 $result = $group->findGroup($m->categoryid); 34 if ($result[‘code‘] == 1) { 35 $ret = $group->findGroup($result[‘data‘]->pid); 36 if ($ret[‘code‘] == 1) { 37 return $ret[‘data‘]->name; 38 } 39 } 40 41 return ‘‘; 42 } 43 ], 44 [ 45 ‘format‘ => ‘raw‘, 46 ‘label‘ => ‘所属类别‘, 47 ‘value‘ => function($m) { 48 $group = new \backend\models\huangye\Group(); 49 $result = $group->findGroup($m->categoryid); 50 if ($result[‘code‘] == 1) { 51 return $result[‘data‘]->name; 52 } else { 53 return ‘‘; 54 } 55 } 56 ], 57 [ 58 ‘format‘ => ‘raw‘, 59 ‘label‘ => ‘类型‘, 60 ‘value‘ => function($m) { 61 return $m->type == 1 ? ‘商铺‘ : ‘服务‘; 62 } 63 ], 64 ‘name‘, 65 [ 66 ‘format‘ => ‘raw‘, 67 ‘label‘ => ‘图标‘, 68 ‘value‘ => function($m) { 69 return Html::img($m->logo, [‘width‘ => 80]); 70 } 71 ], 72 ‘phone‘, 73 ‘address‘, 74 ‘sortorder‘, 75 ‘favcount‘, 76 ‘callcount‘, 77 [ 78 ‘format‘ => ‘raw‘, 79 ‘label‘ => ‘备注‘, 80 ‘value‘ => function($m) { 81 return mb_substr($m->content, 0, 20, ‘UTF-8‘) . ‘......‘; 82 } 83 ], 84 ‘worktime‘, 85 [ 86 ‘format‘ => ‘raw‘, 87 ‘label‘ => ‘创建时间‘, 88 ‘value‘ => function($m) { 89 return date(‘Y-m-d‘, $m->ctime); 90 } 91 ], 92 [ 93 ‘format‘ => ‘raw‘, 94 ‘label‘ => ‘更新时间‘, 95 ‘value‘ => function($m) { 96 return $m->utime > 0 ? date(‘Y-m-d‘, $m->utime) : date(‘Y-m-d‘, $m->ctime); 97 } 98 ], 99 [ 100 ‘format‘ => ‘raw‘, 101 ‘label‘ => ‘状态‘, 102 ‘value‘ => function($m) { 103 return $m->status == 1 ? ‘显示‘ : ‘影藏‘; 104 } 105 ], 106 107 [‘class‘ => ‘yii\grid\ActionColumn‘], 108 ], 109 //‘options‘ => [‘class‘=>‘table table-striped table-bordered table-hover‘], 110 ]); ?> 111 112 </div>