当前位置: 主页 > 浏览器教程 > 从yii权威指南中学到的

从yii权威指南中学到的

更新时间:2022-12-09 10:24:22

从yii权威指南中学到的

2016年放假安排时间表图(官方权威)word最新图文打印版 类型:电子资料大小:171KB语言:中文 评分:10.0 标签: 立即下载 第 6 页 如何获得上一页的url以返回

 

  Yii::app()->request->urlReferrer;

  accessControl 是Ccontroller中内置的过滤方法,其它的还有ajaxOnly postOnly

  CMaskedTextField此组件用于限制用户的输入,对应的jquery插件http://digitalbush.com/projects/masked-input-plugin/

  在一对多,多对多查询时,the eager loading 联合所有的表生成一条语句,如果主表有limit的查询选项,那么他将单独执行,然后再执行与关联表有关的语句,返回相关表的数据对象,这就是为什么在做大优惠时,以中间表为查询条件出错的原因,解决办法

  with()返回 CActiveFinder对象,其方法together(),既使主表中有LIMIT/OFFSET 也是返回一条sql;

  多对多查询时,分页有时候页中显示的条数不正确,因为有重复的项,加上$criteria->group = true即可

  模型的rules中,验证某个字段不能重复,array('name', 'unique','message' => '有重复的名子'),

  CStatePersister是yii的核心组件,提供了基于文件的数据保存方式,可以不在同的请求中使用

  COutputCache 即是一个组件,又是一个filter,前者的时候用于在view中缓存内容,后者的时候用于在controller中缓存

  就是说片段缓存,是把COutputCache当一个widget来用,页面缓存把COutputCache当作一个filter来用

  动态缓存,用CController的一个方法 renderDynamic($callback);

  在布署模式的时候,有错误不会有stack样的提示,会显示一个errorxxx的错误

  如何在程序有错的时候跳到指定的action

  在components中设置

  'errorHandler'=>array(

  'errorAction'=>'site/error',

  ),

  在此action中可以能过Yii::app()->errorHandler->error获得错误信息

  把字符串分解成数组,并去掉空值

  preg_split('/s*,s*/','this , is , , a test',-1,PREG_SPLIT_NO_EMPTY )

  CActiveRecord::exits();判断有没有这样的记录,一般用于添加时,判断某字段有没有重复

  CActiveDataProvider 一个基于ActiveRecord的数据提供源

  常用的用法

  $dataProvider=new CActiveDataProvider('Post', array(

  'criteria'=>array(),

  'pagination'=>array(),

  'sort'=>array(),

  ));

  ClistView同上结合使用,其中的_view中可以用一个$data的变量,代表当前的model数据

  如果dataProvider中的pagination,sort设为false,则CliveView中对应的部分也无法使用

  $this->widget('zii.widgets.ClistView',array(

  'dataProvider' => $dataprovider,

  'itemView' => '_view',

  'template' => '{items}{sorter}{pager}',

  'sortableAttributes' => array(

  ),

  ));

  CGridView的使用也结合$dataprovider,

  用的时候主要是对columns的配置,主要有

  CDataColumn, CLinkColumn, CButtonColumn and CCheckBoxColumn.具体用法看api

  总的说来CgridView没有ClistView灵活

  插入meta信息

  Yii::app()->clientScript->registerMetaTag('keywords','关键字');

  Yii::app()->clientScript->registerMetaTag('description','一些描述');

  CMap::mergeArray() 比array_merge更智能的合并数组,yii中配置的合并用这个

  CClipWidget 通过ob_start ob_getconent生成一段不显示的内容,可以能过CController::clips访问,如

  $this->beginWidget('CClipWidget',array('id'=>'name','renderClip'=>true));

  可以通过$this->clips['name']来显示,其中的renderClip如果为false,则在当前位置不显示内容

  如果在Model一次验证多个属于,显示不同的内容?如下 [后来发现这个不起作有]

  return array(

  array('title, content', 'required',

  'message'=>'Please enter a value for {attribute}.'),

  // ... other rules

  );

  获得服务器时间

  $_SERVER['REQUEST_TIME']

  维护程序时,这样子所有的请求转发到一个地方

  'catchAllRequest'=>array('site/all'),

  根据二级域名缓存

  array(

  'COutputCache + search',

  'duration' => 120,

  'varyByParam' => array('q','page'),

  'varyByExpression' => "app()->request->hostInfo",

  ),

  有多个分站时,同步登陆,基本于cookie

  'user'=>array(

  'identityCookie'=>array('domain'=>'.dayouhui.com'),

  'allowAutoLogin' => true,

  )

  如果是基本于session

  'session' => array(

  'cookieParams' => array('domain' => '.dayouhui', 'lifetime' => 0),

  'timeout' => 3600,

  ),

  如何使用theme

  在main.php中配置

  'theme'=>'classic',

  如何得到前前使用的主题

  Yii::app()->theme

  得到名子

  Yii::app()->theme->name;

  如果防止post跨站攻击

  'request'=>array(

  'enableCsrfValidation'=>true,

  ),

  这时候生成的表单要用CHtml::form(),其会写一段代码在cookie中

  如何让表单验证不驼过的提示为中文

  在main.php的配置中加上

  'language' => 'zh_CN',

  如何实现仿google的自动完成功能