1. //1,使用updateCounters()来更新计数器字段。
  2. Book::model()->updateCounters(array('download_count'=>1),':id=id',array(':id'=>$id));
  3.  
  4. //2,使用sendFile()来下载文件。
  5. $type = LFilter::checkString($_GET['t']);
  6. $dataProvider = Book::model()->findByPk($id);
  7. $content = $this->renderPartial('book',array(
  8. 'dataProvider' => $dataProvider,
  9. 'type' => $type,
  10. ),true,false);
  11. Yii::app()->request->sendFile($dataProvider->name.'.'.$type,$content);
  12.  
  13. //3,设计数据库时候如果create_time,update_time字段为int(10).在模型中使用行为插件。
  14. public function behaviors()
  15. {
  16. return array(
  17. 'CTimestampBehavior' => array(
  18. 'class' => 'zii.behaviors.CTimestampBehavior',
  19. 'createAttribute' => 'create_time',
  20. 'updateAttribute' => 'update_time',
  21. )
  22. ); }
  23.  
  24. //4,如果有些字段使用1,2,3之类的数字存储,在程序中使用时候含义不明确。可以model中加入如下函数.
  25. private static $_items = array();
  26. public static function loadItems($type,$code=null)
  27. {
  28. self::$_items = array(
  29. 'status' => array(
  30. '1' => Yii::t('dh','开启'),
  31. '2' => Yii::t('dh','关闭'),
  32. ),
  33. 'type' => array(
  34. '1' => Yii::t('dh','产品'),
  35. '2' => Yii::t('dh','文章'),
  36. ),
  37. );
  38. return $code ? self::$_items[$type][$code] : self::$_items[$type];
  39. }
  40.  
  41. //5,多语言使用Yii::t()函数。
  42. public function attributeLabels()
  43. {
  44. return array(
  45. 'verifyCode'=>Yii::t('default','验证码'),
  46. 'name'=>Yii::t('default','名字'),
  47. 'email'=>Yii::t('default','邮箱'),
  48. 'subject'=>Yii::t('default','标题'),
  49. 'body'=>Yii::t('default','内容'),
  50. 'required'=>Yii::t('default','变量"{var}"没有定义'array('{var}'=>$var));
  51. );
  52. }
  53.  
  54. //6,数据库表使用了前缀,则使用{{$tableName}}。
  55. public function tableName()
  56. {
  57. return '{{product}}';
  58.  
  59. //7,Cookie的使用
  60. //设置Cookie
  61. $cookie=new CHttpCookie($name,$value);
  62. $cookie=time()+60*60*24;
  63. Yii::app()->request->cookies[$name]=$cookie;
  64. //获取Cookie
  65. $cookie=Yii::app()->request->cookies[$name];
  66. $value=$cookie->value;
  67. //删除Cookie
  68. $cookie = Yii::app()->request->getCookies();
  69. unset($cookie[$name]);
  70. }
  71.  
  72. //8,zii.widgets.jui.CJuiTabs的使用
  73. <?php
  74. $this->widget('zii.widgets.jui.CJuiTabs', array(
  75. 'tabs'=>array(
  76. Yii::t('book','基本信息') => $this->renderPartial('_basic',array(
  77. 'model' => $model,
  78. 'form' => $form,
  79. ),true),
  80. Yii::t('book','作品标签') => array('ajax'=> $this->createUrl('tag/boxList',array('tag'=>$model->tag))),
  81. Yii::t('book','作品封面') => $this->renderPartial('_image',array(
  82. 'model'=>$model,
  83. 'form'=>$form,
  84. ),true),
  85. Yii::t('book','作品公告') => $this->renderPartial('_notice',array(
  86. 'model'=>$model,
  87. 'form'=>$form,
  88. ),true),
  89. ),
  90. // additional javascript options for the tabs plugin
  91. 'options'=>array(
  92. 'collapsible'=>false,
  93. ),
  94. ));
  95.  
  96. ?>
  97.  
  98. //对于tabs而言,对于复杂内容的渲染结合使用renderPartial();
  99.  
  100. //9,zii.widgets.grid.CGridView的使用
  101.  
  102. <?php $this->widget('zii.widgets.grid.CGridView', array(
  103. 'id'=>'chapter-grid',
  104. 'dataProvider'=>$model->search(),
  105. 'filter'=>$model,
  106. 'columns'=>array(
  107. 'id',
  108. //锚点<a href="http://blog.163.com/huv520@126/blog/"></a>
  109. array(
  110. 'name'=>'name',
  111. 'type'=>'raw',
  112. 'value'=>'CHtml::link($data->name,"/book/$data->id")',
  113. ),
  114. //图片
  115. array(
  116. 'name'=>'image',
  117. 'type'=>'image',
  118. 'value'=>'LImages::getPath("book").$data->image',//图片相对路径
  119. ),
  120. //下拉列表
  121. array(
  122. 'name'=>'type',
  123. 'value'=>'Lookup::item("chapterType",$data->type)',
  124. 'filter'=>Lookup::items('chapterType'),
  125. ),
  126. //内容截取
  127. array(
  128. 'name'=>'content',
  129. 'type'=>'html',
  130. 'value'=>'mb_substr(htmlspecialchars_decode($data->content),0,100,"utf-8")',
  131. ),
  132. //时间
  133. array(
  134. 'name'=>'create_time',
  135. 'type'=>'datetime',
  136. ),
  137. // 根据相关信息读数据库
  138. array(
  139. 'name'=>'user_id',
  140. 'value'=>'User::model()->findbyPk($data->user_id)->username',
  141. 'filter'=>false,
  142. ),
  143. array(
  144. 'class'=>'CButtonColumn',
  145. ),
  146. ),
  147. )); ?>
  148.  
  149. //10,findAll()的使用;
  150. $params=array(
  151. 'select'=>'id,name,image',
  152. 'order'=>'total_point DESC',
  153. 'limit'=>5,
  154. );
  155.  
  156. $this->findAll($params);
  157. find()使用同理,只是返回一条数据。
  158. //11,readAll()返回数组结果集
  159.  
  160. $query = 'SELECT id,username FROM user';
  161. $command = Yii::app()->db->createCommand($query);
  162. return $command->query()->readAll();

YII 小模块功能的更多相关文章

  1. pandas模块实现小爬虫功能-转载

    pandas模块实现小爬虫功能 安装 pip3 install pandas 爬虫代码 import pandas as pd df = pd.read_html("http://www.a ...

  2. YII 小部件实现的注册表

    今天来进行用户注册功能yii集成了很多验证框架,framework/validators下面,这个文件夹的最后一个文件CValidator.php 是总的验证信息,根据请求参数决定需要那种验证 如:u ...

  3. 使用DeviceOne实现微信小程序功能

    微信小程序即将推出,还没推出就火的不行了.基于微信这个巨大平台,小程序必然能有巨大成功.不过它并不能完全取代App,该开发App还得开发.如果我们自己想实现一个基于自己的APP包含类似微信的小程序功能 ...

  4. python常用小模块使用汇总

    在写代码过程中常用到一些好用的小模块,现整理汇总一下: 1.获取当前的文件名和目录名,并添到系统环境变量中. file = os.path.abspath(__file__)             ...

  5. 基于Metronic的Bootstrap开发框架--工作流模块功能介绍(2)

    本篇继续<基于Metronic的Bootstrap开发框架--工作流模块功能介绍>,继续介绍基于Metronic的Bootstrap开发框架的工作模块功能,介绍工作流模块中相关业务表单的界 ...

  6. 基于Metronic的Bootstrap开发框架--工作流模块功能介绍

    在很早之前的随笔里面,已经介绍了WInform框架中工作流模块的功能,不过由于工作流模块中界面处理部分比较麻烦,一直没有在Bootstrap框架中进行集成,最近由于项目的关系,花了不少精力,把工作流模 ...

  7. Winform开发框架中的内容及文档管理模块功能介绍

    在开发项目的时候,我们有一些场景需要编辑一些HTML文档,作为内容发布系统的一部分,有时候也需要对一些文档如WORD文档进行编辑管理,这样需要我们对这些内容及文档进行合适的管理.本文主要介绍在WInf ...

  8. 怎样找到微信小程序功能呢?

    怎样找到微信小程序功能呢? 17年1月9号这个功能刚推出时,非常火,但我在微信中迟迟找不到微信小程序功能,微信明明更新到了最新版也没有:后来经过以下步骤才找到这个功能! 1.微信版本不能过低,这个一般 ...

  9. yii 修改模块使用的布局文件

    方法一:yii模块默认使用系统当前的主题布局文件,如果在主配置文件中配置了主题比如: 'theme'=>'mythm', 那么yii的模块就使用 protected/themes/mythm/v ...

随机推荐

  1. MongoDB3.2版本与3.0版本写场景压力测试对比

    我们主要是为了测试journal对写操作性能的影响.分别测试了3.2版本,3.0版本在ramdisk,hdd上有journal,和没journal的情况. 发现一个很怪异的现象,3.2版本时候,随着y ...

  2. Linux网络

    netstat 查看网络状态 netstat: -r :显示路由表 -n: 以数字方式显示 -u: 显示UDP连接 -t :显示TCP连接 -l:显示监听状态的连接 -p: 显示监听指定套接字的进程的 ...

  3. 【转】PFILE和SPFILE介绍

    原文:http://blog.sina.com.cn/s/blog_77bba23901017xcl.html 一.PFILE Pfile(Parameter File,参数文件)是基于文本格式的参数 ...

  4. js传带参数的函数

    字符串: setTimeout('pageScroll(4)',100);

  5. Groovy 数组操作

    将字符串转为map def str="['汤菜':['1000000028','1000000030'],'肉菜':['1000000032'],'素材':['1000000031']]&q ...

  6. 学一点 mysql 双机异地热备份----快速理解mysql主从,主主备份原理及实践

    双机热备的概念简单说一下,就是要保持两个数据库的状态 自动同步.对任何一个数据库的操作都自动应用到另外一个数据库,始终保持两个数据库数据一致. 这样做的好处多. 1. 可以做灾备,其中一个坏了可以切换 ...

  7. C# WPF 从网络加载图片到byte[]数组中 Stream转byte[]代码

    折腾一中午 因为NetworkStream不支持Length属性 private byte[] GetImageFromResponse(WebResponse response) { using ( ...

  8. C语言头文件书写

    说一下C语言的存储类说明符: 1.Auto       只在块内变量声明中被允许,表示变量具有本地生存期. 2.Extern    出现在顶层或块的外部变量函数与变量声明中,表示声明的对象具有静态生存 ...

  9. 数据库 - FMDB

    FMDB 是基于 SQLite 封装的 面向对对象(OC) 的API. FMDB是iOS平台的SQLite数据库框架 FMDB以OC的方式封装了SQLite的C语言API FMDB 需要libsqli ...

  10. nutch 索引

    nutch开发环境搭建     nutch-1.3导入eclipse     nutch-1.7导入eclipse nutch部署     nutch-1.3linux下部署     nutch-1. ...