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>

 

posted @ 2015-05-03 02:23  zhgxun  阅读(1395)  评论(0编辑  收藏  举报