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>
时间: 2024-08-17 15:16:56

Yii2学习笔记一 GridView的相关文章

yii2学习笔记

之前看过Yii2框架,也在其他框架实现其Gii手脚架功能,现在开始使用Yii做项目,顺便记录一下学习笔记 先推荐一个网址 Yii2速查表(中文版)http://nai8.me/tool-sc.html Yii和Laravel类似,都有一个全局的app实例化对象,下面先来看看Yii::app() Yii::app() 是一个实例化的对象,是我们在当前框架里边可以直接操作的对象, 我们可以把这个对象理解成请求应用的第一个对象. Yii框架是纯OOP面向对象框架,也就是利用对象调用类的属性.方法,完成

Yii2学习笔记1--Yii2的基本介绍和Composer安装

一.Yii的基本介绍 Yii 是一个高性能的,以快速,安全,专业著称 , 适用于开发 WEB2.0 应用的 PHP 框架 .自带了丰富的功能 ,包括 MVC,DAO/ActiveRecord,I18N/L10N,缓存,身份验证和基于角色的访问控制,脚手架,测试等,可显著缩短开发时间. 二.Yii1.1和Yii2 没有Yii1.1的经验,并不妨碍对Yii2.0的学习.因为对ThinkPHP3.2.3较熟悉,可以两者对比着学(感觉很类似). 三.Windows 系统用Composer安装Yii2 ①

android学习笔记之GridView的使用

除了listview会使用适配器外,还有一种就是GridView,listview是单列多行的显示形式,适用于多项目的查看.而GridView是多行多列的显示形式,一般用在查看图片样式的activity中.一个小demo.每一项都是一个图片下面一行文字. GirdView的一些属性: android:numColumns="auto_fit" --------列数设置为自动android:columnWidth="90dp",----------每列的宽度,也就是I

Android学习笔记之GridView的使用详解

(1)创建布局代码如下: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" andr

Yii2 学习笔记 01 -- 依赖注入在yii2中的应用

什么是依赖注入?                  依赖注入(Dependency Injection)是设计模式的一种.名字比较抽象,但是,要解决的问题却是比较明确.对于给定的应用程序,需要借助一些相对独立的组件来完成功能.一般来说,使用这些组件的过程就包含在应用程序的逻辑语句之中.问题是,当这些组件想要做成类似插件功能,以达到应用程序的业务逻辑不变就能随意的更改组件的实现的效果.这种灵活性取决于应用程序如何组装这些组件.如果说应用程序依赖于这些组件的话,依赖注入就是把这些依赖关系从应用程序的

Yii2学习笔记:汉化yii,设置表单的描述(属性标签attributeLabels)

一:汉化框架 框架汉化在这里设置,如果不生效,前台后台的配置文件都设置下应该就可以了 二:汉化表单 汉化表单,直接在模型层设置,例如: 原来的联系我们表单 汉化后: ] 这种汉化在哪里修改呢?其实是设置属性标签,设置位置在模型层 代码如下 public function attributeLabels() { return [ 'name' => '称呼', 'email' => '邮箱', 'subject' => '标题', 'body' => '内容', 'verifyCod

慕课网,我的yii2学习笔记(基础篇)

一.关于PHP知识点 1.命名空间:存放类文件的空间,可以随便定义,建议与类文件目录一致,方便管理. 注:(1).如果类没有设置命名空间,默认为顶级命名空间,在程序中可以用一下方式实例化. $model = new \Class() (2).如果引入类名相同,可以用一下代码区分. use a\Class; use b\Class as B_Class; 2.session: 每个浏览器存储网站的session时会产生一个PHPSESSID,对应到服务器用存储session文件的名字. 二.关于Y

Yii2学习笔记之场景

场景 一个模型可能在多个场景中使用,在不同的场景中,模型可能使用不同的业务逻辑和规则.例如, User 模型可能在用户登录时使用,也可能在用户注册时使用,某些属性可能在用户注册时强制要求有,在用户登录时不需要,例如email属性. 模型使用 yii\base\Model::scenario 属性保持使用场景的跟踪, 默认情况下,模型支持一个名为 default 的场景, 两种设置场景的方法: //场景作为属性来设置 $model = new User; $model -> scenario =

Yii2的相关学习记录,Gridview小部件使用及kartik-v/yii2-grid扩展(五)

现在记录下Gridview的相关内容,也是强迫症犯了,Yii2自带的Gridview虽然不错,但是过滤栏如果一些字段用不着,不会自动合并成一行,当然也可以过滤栏不用,而是在最上方自己写一些需要检索的数据,但是这样很麻烦,还要自己去规划样式,写检索什么的.正好在搜索将检索栏和标题合并时,看到了kartik-v/yii2-grid可以实现这些功能,而且还自带导出excel.csv等数据,所以也顺便试了下它的功能,调出了自己喜欢的样式.在用kartik-v的Gridview之前我们还是要了解Yii2自