西西软件园多重安全检测下载网站、值得信赖的软件下载站!
软件
软件
文章
搜索

首页编程开发其它知识 → 从yii权威指南中学到的

从yii权威指南中学到的

相关软件相关文章发表评论 来源:本站整理时间:2010/8/9 0:13:14字体大小:A-A+

作者:佚名点击:5645次评论:0次标签: 权威

  • 类型:电子资料大小: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的自动完成功能

    相关评论

    阅读本文后您有什么感想? 已有人给出评价!

    • 8 喜欢喜欢
    • 3 顶
    • 1 难过难过
    • 5 囧
    • 3 围观围观
    • 2 无聊无聊

    热门评论

    最新评论

    发表评论 查看所有评论(0)

    昵称:
    表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
    字数: 0/500 (您的评论需要经过审核才能显示)