本文汇总了Yii使用技巧。分享给大家供大家参考,具体如下:
一、从yii权威指中学到的
db组件 'schemaCachingDuration'=>3600, 为什么不起做用?
需要开缓存
如何在页面下边显示sql的查询时间
在log组件的routes中加入
array('class'=>'CProfileLogRoute','levels'=>'error, warning',)
同时在db组件中加入
代码如下:'enableProfiling'=>true,
同时在这种情况下,可以用CDbConnection::getStats() 查看执行了多少个语句,用了多少时间
如何知道某一个程序段运行需要的时间
配置好CProfileLogRoute后,在需要测试的地方加上
Yii::beginProfile('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'=>'applog','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.226][trace][system.db.CDbCommand] Querying SQL: SHOW COLUMNS FROM `Bangdan` in E:APMServ5.2.6wwwhtdocsdayouhui.comprotectedmodelsBangdan.php (21)
in E:APMServ5.2.6wwwhtdocsdayouhui.comprotectedcomponentsHotBangdan.php (21) in E:APMServ5.2.6
如果在调试时,终止程序运行且看到日志,不能用die及exit;
用application::end,即Yii::app()->end(),其会触发onEndRequest事件,日志就是在这个事件中记录的
activeRecord几个占位方法重写的注意点
必须带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($content);
新闻热点
疑难解答