Yii技巧大全(摘录)

  • 来源:新网
  • 更新日期:2018-03-22

摘要:Yii技巧大全(摘录) db组件 \'schemaCachingDuration\'=>3600, 为什么不起做用? 需要开缓存 如何在页面下边显示sql的查询时间 在log组件的routes中加入 array( \'class\'=>\'CProfileLogRoute\', \'levels\'=>\'error, warning\', ) 同时在db组件中加入 \'enablePr

  Yii技巧大全(摘录)
  db组件\'schemaCachingDuration\'=>3600,为什么不起做用?
t01e4b4c55f9a901f71.jpg
  需要开缓存
  如何在页面下边显示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]QueryingSQL:SHOWCOLUMNSFROM`Bangdan`inE:APMServ5.2.6wwwhtdocsdayouhui.comprotectedmodelsBangdan.php(21)
  inE:APMServ5.2.6wwwhtdocsdayouhui.comprotectedcomponentsHotBangdan.php(21)inE: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=newCHtmlPurifier;
  $purifier->options=array("HTML.Allowed"=>"div");
  $content=$purifier->purify($content);
  或者
  
  shouye\',
  \'separator\'=>\'>>>\'
  ));?>
  其中breadcrumbs中Controller中的一个属性,如果要出现导航,就要在view中给此属性附值
  生成的html如下
  
  
  验证码如何生成及验证:
  Controller中
  publicfunctionactions()
  {
  returnarray(
  \'captcha\'=>array(
  \'class\'=>\'CCaptchaAction\',
  \'backColor\'=>0xFFFFFF,
  \'maxLength\'=>4,
  \'minLength\'=>4,
  ),
  );
  }
  View中