ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:30.37KB ,
资源ID:5627059      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5627059.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Yii笔记.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Yii笔记.docx

1、Yii笔记Yii笔记一、从yii权威指中学到的db组件 schemaCachingDuration=3600, 为什么不起做用?需要开缓存如何在页面下边显示sql的查询时间在log组件的routes中加入array(class=CProfileLogRoute,levels=error, warning,)同时在db组件中加入enableProfiling=true,同时在这种情况下,可以用CDbConnection:getStats() 查看执行了多少个语句,用了多少时间如何知道某一个程序段运行需要的时间配置好CProfileLogRoute后,在需要测试的地方加上Yii:beginProf

2、ile(blockID);/程序段Yii:endProfile(blockID);enableParamLogging=true,的作用是?在日志的bind的参数后边跟数的值如何在页面底部显示所有的db相关的日志同上,配置log组件的routes中加入array(class=CWebLogRoute,levels=trace, info, error, warning,categories = system.db.*,/showInFireBug = true, 将在firebug中显示日志),把日志记录到数据库array(class=CDbLogRoute,logTableName=appl

3、og,connectionID=db,),运行时表applog会自动生成,如果不能生成,参照api自已建立如何记录$_GET,$_SESSION等信息,在以上的routes中各个配置中加上filter=CLogFilter,log配置中的level设置不对,可能会得不到日志信息另外level,category的值可以随便写,只要在用yii:Log(,自定义level,自定义的category)时对应起来即可如何记录更详细的信息,能记录stack,在入口文件中加上define(YII_TRACE_LEVEL,10);数字越大,记当的越详细,结果如下15:31:57.226tracesystem.

4、db.CDbCommand Querying SQL: SHOW COLUMNS FROM Bangdan in E:APMServ5.2.6wwwhtdocsprotectedmodelsBangdan.php (21) in E:APMServ5.2.6wwwhtdocsprotectedcomponentsHotBangdan.php (21) in E:APMServ5.2.6如果在调试时,终止程序运行且看到日志,不能用die及exit;用application:end,即Yii:app()-end(),其会触发onEndRequest事件,日志就是在这个事件中记录的activeRec

5、ord几个占位方法重写的注意点必须带boolean返回值如何发布一个资源文件并引用$css=Yii:app()-getAssetManager()-publish(dirname(_FILE_)./aa.css);yii:app()-clientScript-registerCssFIle($css);如果改变activelable中默认的标题重写方法attributeLabels过滤不良代码$purifier=new CHtmlPurifier;$purifier-options=array(HTML.Allowed=div);$content=$purifier-purify($conte

6、nt);或者beginWidget(CHtmlPurifier); ?.display user-entered content here.endWidget(); ?如何防止重复提交?提交后Ccontroler-refresh();如何在成功后显示一个提示,用户刷新页时去掉提示Cwebuser-setFlash();getFlash();如何防止重复提交, 并在提交成功后给出提示?控制器中Yii:app()-user-setFlash(submit,thanks);$this-refresh();view中if(Yii:app()-user-hasFlash(submit)echo Yii:

7、app()-user-getFlash(submit);一般我们是跳转到列表页,或用redirect跳到编辑页,就不需要了,如果还是要显示当前页以上就有用了,比如在当前时显示,编辑或添加新的记录如何分页CPagination代表分页信息,有多少页,每页几条记录等CLinkPager生成分页的代码,自定义css可以给属性cssFile一个值$criteria=new CDbCriteria();$pages=new CPagination(数据库中的总记录数);$pages-pageSize=2;$pages-applyLimit($criteria);/给$criteria-limit off

8、set等符值$posts=Post:model()-findAll($criteria);$this-widget(CLinkPager,array(pages=$pages);列表如何排序$criteria=new CDbCriteria();$sort = new CSort(Post);$sort-defaultOrder= status asc;$sort-applyOrder($criteria);$posts=Post:model()-findAll($criteria);应用时用$sort-link(字段名)实际是生成一个带参数的url,然后在在applyOrder时应用这些参数

9、修改$criteria,得到相应的查寻结果如何生成并验证验证码:基本用法widget(CCaptcha); ? 具体参数查手册原理CCaptcha这个widget会在run时调用当前控制器的$captchaAction=captcha方法,这个方法指到一个类CCaptchaAction其会生成验证码图象,并记入到session中如何显示静态页重写actionshelp=array(class=CViewAction,basePath=help, /指定目录名defaultView=default,viewParam=help /get参数),假定当前控制器是post那么可以能过/post/he

10、lp/help/content访问help目录下的content.php可以建立子目录比如help/reigterhelp/content.那可以通过/post/help/help/registerhelp.content来访问用CViewAction的好处时,可以与其它的view共享layout关于没有权限访问跳转的url相关当没有权限时调用CAccessControlFilter类中的accessDenied,其调用CwebUser中的loginRequired(),记录当前的returnurl后跳转到CWebUser配置中的loginurl,在此处登陆后,可以通过redirect跳转到r

11、eturnurl(Yii:app()-request-redirect(Yii:app()-user-returnUrl);)当强制显示登陆表单,比如判断用户是guest就一直列出登陆表单,不会调用loginRequired, 就得不到returnurl,这时候想跳回去,参见cookbook上相关贴子registerCoreScript在framework/web/js/package.php中列出的才是多对多关联条件$criteria-addInCondition(categorys.id,$in);$criteria-addSearchCondition(Shop.name,$keywor

12、d);$shops=Shop:model()-with(array(categorys=array(together=true)-findAll($criteria);同时要在Shop模型中加入alias=categorys ,另外together=true放在模型的关联中也可YII中的RBAC权限,用数据库存item,在system/web/auth下找到相应的sql导放到数据库中配置authManager = array(class = CDbAuthManager,connectionID = db,),如果在sql中导入的三个表的表名不是默认的,需要在这上边的配置中配置,具体的看api

13、$auth=Yii:app()-authManager;/$auth-createOperation(post,postpost);/$auth-createTask(post,posts);$auth-createRole(post,post);auth-assign(post,demo);if(Yii:app()-user-checkAccess(post)echo yes;elseecho no;这种情况下三者是一样的如何获得上一页的url以返回Yii:app()-request-urlReferrer;accessControl 是Ccontroller中内置的过滤方法,其它的还有aj

14、axOnly postOnlyCMaskedTextField此组件用于限制用户的输入,对应的jquery插件在一对多,多对多查询时,the eager loading 联合所有的表生成一条语句,如果主表有limit的查询选项,那么他将单独执行,然后再执行与关联表有关的语句,返回相关表的数据对象,这就是为什么在做大优惠时,以中间表为查询条件出错的原因,解决办法with()返回 CActiveFinder对象,其方法together(),既使主表中有LIMIT/OFFSET 也是返回一条sql;多对多查询时,分页有时候页中显示的条数不正确,因为有重复的项,加上$criteria-group =

15、true即可模型的rules中,验证某个字段不能重复,array(name, unique,message = 有重复的名子),CStatePersister是yii的核心组件,提供了基于文件的数据保存方式,可以不在同的请求中使用COutputCache 即是一个组件,又是一个filter,前者的时候用于在view中缓存内容,后者的时候用于在controller中缓存就是说片段缓存,是把COutputCache当一个widget来用,页面缓存把COutputCache当作一个filter来用动态缓存,用CController的一个方法 renderDynamic($callback);COut

16、putCache几个属性,duration,dependency另外还有几个,可以通称为Variation, 有什么作用呢?在beginCache是需要手工指定一个id,Variation的作有就是自动给生成这个id在布署模式的时候,有错误不会有stack样的提示,会显示一个errorxxx的错误如何在程序有错的时候跳到指定的action在components中设置errorHandler=array(errorAction=site/error,),在此action中可以能过Yii:app()-errorHandler-error获得错误信息把字符串分解成数组,并去掉空值preg_split

17、(/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(), );上如sort=array(defaultOrder=status, update_time

18、DESC,),ClistView同上结合使用,其中的_view中可以用一个$data的变量,代表当前的model数据如果dataProvider中的pagination,sort设为false,则CliveView中对应的部分也无法使用$this-widget(zii.widgets.ClistView,array(dataProvider = $dataprovider,itemView = _view,template = itemssorterpager,sortableAttributes = array(),);CGridView的使用也结合$dataprovider,用的时候主要是

19、对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_star

20、t ob_getconent生成一段不显示的内容,可以能过CController:clips访问,如$this-beginWidget(CClipWidget,array(id=name,renderClip=true);可以通过$this-clipsname来显示,其中的renderClip如果为false,则在当前位置不显示内容如果在Model一次验证多个属于,显示不同的内容?如下 后来发现这个不起作有return array(array(title, content, required,message=Please enter a value for attribute.),/ . ot

21、her rules);获得服务器时间$_SERVERREQUEST_TIME维护程序时,这样子所有的请求转发到一个地方catchAllRequest=array(site/all),根据二级域名缓存array(COutputCache + search,duration = 120,varyByParam = array(q,page),varyByExpression = app()-request-hostInfo,),有多个分站时,同步登陆,基本于cookieuser=array(identityCookie=array(domain=),allowAutoLogin = true,)如

22、果是基本于sessionsession = array( cookieParams = array(domain = .dayouhui, lifetime = 0),timeout = 3600,),如何使用theme在main.php中配置theme=classic,如何得到前前使用的主题Yii:app()-theme得到名子Yii:app()-theme-name;themes文件夹和protected是同级的,其下边某个theme的目录结果同protected/views下一样关于skin用theme改变view的外观,skin是用来改变widgets的外观的skin是健值对用于初始化

23、一个widget的属性要对widget使用skin,需要做以下几步1:配置widgetFactory=array(enableSkin=true,),2:在views下建立skins目录3:在skins目录下建立与Widget名子一样的php文件,返回数组,即能用于widget的初始配置4:在php文件中,如果有defautl的配置,会先找这个skin5:如果应用了theme,程序会先去对应的theme目录下的skins中找配置文件6:如果只是想给widget统一一个skin,建议用Customizing Widgets Globally如果防止post跨站攻击request=array(en

24、ableCsrfValidation=true,),这时候生成的表单要用CHtml:form(),其会写一段代码在cookie中防止Cookie攻击 request=array(enableCookieValidation=true,),同时生成与得到cookie是要用 CHttpCookie如何让表单验证不驼过的提示为中文在main.php的配置中加上language = zh_CN,如何实现仿google的自动完成功能widget(CAutoComplete, array(name=xxx,url=array(suggestTags),multiple=false,htmlOptions=

25、array(size=50),); ?然后在url指定的地址中的方法中如下输出,即可 echo anbnc/CGridView详解这东西在后台比较有用,能加速开发的速度,值得一看CGridView用表格的方式显示数据项每一行代表一个数据项,一列通常代表数据项的一个属性CGridView支持排序和分页,可以用ajax或普通的方式CgridView必序和data provider一起使用最简单的用法$dataprovider = new CActiveDataProvider(Post);$this-widget(zii.widgets.grid.CGridView,array(dataProvi

26、der=$dataprovider,);这会用表格的方式显示每一条数据项,每一列是Post的一个属性在显示中带了分页和排序我们可以自定义CgridView:columns属性,以自定义表格列的显示方式这个cloumns如何配置呢?其是一个数组,每一个数组元素对应着一列的配置,可以是字符串或数组1、如果是字符串,格式是name:type:header 后两者是可选的,根据这三个值,创建一个CdatColumn实例其中type参见CFormatter2、如果是数组,其可以实例化CDdataColumn、ClinkColumn,CButtonColumn,CCheckBoxColumn实例,具体实例

27、化哪个由数组中的class指定,默认是CDataColumn2.1,如果class=CDataCloumn则可以指定name或者value,如果指定以value优先用CDataColumn时如何以关联表的数据序列?代码如下:表示可以post关联的author中的username排序列 $dataprovider = new CActiveDataProvider(Post,array(criteria=array(with=author,),sort=array(attributes=array(title,create_time,author_id=array(asc=author.user

28、name asc,desc=author.username desc,label=作者),);$this-widget(zii.widgets.grid.CGridView,array(dataProvider=$dataprovider,columns=array(title,create_time,array(name=author_id,value=$data-author-username),),);另外CDataColumn还有一个filter属性,如果是空,那么生成一个textfield,如果是数组(键值),则生成一个dropDownlist在当前列的上部,供搜索2.2:如果class=CLinkColum

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1