zoukankan      html  css  js  c++  java
  • yii2 日志

    原文地址:http://blog.csdn.net/woaixhq/article/details/46364223

    对于yii的研究,还没有那么深刻,之所以在这种情况下写,还是考虑到了后来入门人没有中文资料,而又无可下手的尴尬境地。希望对新手和我自己多一份帮助吧。总结几个自己的经验吧。环境的配置我就不做解释了。这个可以从网上找。

    1关于定义系统参数的问题

    在项目中config的目录中,分别有params-local.php和params.php的俩个php文件,这俩个文件了可以设置你所需要的 全局的参数。具体目录是放在common、frontend、backend的config里,看你所需了。这俩个文件的区别,在我看来,就是是否是本地 化的区别。如果有参数需要根据网站部署环境而改变,最好还是放在params-local.php里,params-local.php最好不要放在项目 版本库里。params.php里的参数还是要存放比较稳定的参数。另外,在这俩个里边设置了参数,调用是没区别的。举个例子:

    在params-local.php中

    1. <?php  
    2. return [  
    3.     'front_url' => 'http://www.aaa.cn/'  
    4. ];  

    在params.php中

    1. <?php  
    2.   
    3. return [  
    4.     'adminEmail' => 'admin@example.com',  
    5. ];  

    在项目中调用都可以以Yii::$app->params['adminEmail']来调用


    2,创建自己的小组件(其实就是可以把公用的方法组合一下。方便程序调用)

    在common下创建components目录,在此目录下新建Functions.php文件。Function类代码如下

    1. <?php  
    2.   
    3. namespace commoncomponents;  
    4.   
    5. use Yii;  
    6. use yiiaseComponent;  
    7.   
    8. class Functions extends Component {  
    9.   
    10.     public function test($t="") {  
    11.         echo $t;  
    12.     }  
    13.      
    14. }  

    此类必须继承Component。

    然后再common/config/main.php中的components节点,增加

    1. 'functions' => [  
    2.             'class' => 'commoncomponentsFunctions'  
    3.         ]  
    加完之后,代码结构形如
    1. <?php  
    2. return [  
    3.     'timeZone' => 'Asia/Shanghai',  
    4.     'vendorPath' => dirname(dirname(__DIR__)) . '/vendor',  
    5.     'components' => [  
    6.         'cache' => [  
    7.             'class' => 'yiicachingFileCache',  
    8.         ],  
    9.         'urlManager' => [  
    10.             'enablePrettyUrl' => true,  
    11.             'showScriptName' => false,  
    12.         ],  
    13.         'functions' => [  
    14.             'class' => 'commoncomponentsFunctions'  
    15.         ]  
    16.     ],  
    17.   
    18. ];  

    这时候调用就简单了。利用Yii::$app->functions->test("aaa");


    3.ActiveForm开发时候需要的问题

    对于ActiveForm的验证,实际使用当中总结出一个问题:

    <?= $form->field($model, 'description', ['template' =& gt; '{input}'])->textInput() ?>对于这段代码尤其需要注意,template里千万不能出现不完整标签,否 则验证失效,即['template' => '<td>{input}</td>']这样,验证是不起作用的,但是 ['template' => '<table><tr><td>{input}</td>& lt;/tr></table>']这样是有效的。虽然不会这样布局,但还是希望大家能注意。布局还是div布局


    4关于查询的一些总结

    1)Adv::find()->where(['pos_id'=>1])->andwhere(["status"=> 0])->all();   //查询返回全部 // ->one()  查询1个结果  // ->count()  获取数量
    2)查询一个结果的时候,也可以这样实现
    Adv::findOne($id);或者Adv::findOne($condition);
    3) 多表联查 
    $model=new Adv();
    $model->find()->join(‘LEFT JOIN‘,‘adv_pos‘,‘adv_pos.id=adv.pos_id‘)
    ->select()->//字段
                ->where(‘adv.status‘=>0)
                ->andwhere(‘pos_id=1‘)
                ->one();
    4)like查询  andFilterWhere 例如
    $order->andFilterWhere(['like','product_title',  $product_title]);
    也可以对大于,小于进行这样的操作
    注意一个筛选查询
    $query->andFilterWhere(['like', 'ORG_CODE', $this->ORG_CODE])
          ->andFilterWhere(['between', 'CREATED_AT', $this->START_AT, $this->END_AT]);//这样是错误的
    $query->andFilterWhere(['like', 'ORG_CODE', $this->ORG_CODE])
          ->andFilterWhere(['and', 'CREATED_AT', $this->START_AT, $this->END_AT]);//正确


    5日志的用法

    1)文件日志缓存

    main.php中components增加

    1. 'log' => [  
    2.             'traceLevel' => YII_DEBUG ? 3 : 0,  
    3.             'targets' => [  
    4.                 [  
    5.                     'class' => 'yiilogFileTarget',  
    6.                     'levels' => ['error', 'warning'],  
    7.                 ],  
    8.                 //在原配置的基础上,增加以下配置(新增一个target)  
    9.                 [  
    10.                    'class' => 'yiilogFileTarget',  
    11.                    'levels' => ['error', 'warning','info'],  
    12.                    'logVars'=>[],  
    13.                    //表示以yiidb或者appmodels开头的分类都会写入这个文件  
    14.                    'categories'=>['yiidb*','appmodels*'],  
    15.                    //表示写入到文件sql.log中年月日记录日志  
    16.                    'logFile'=>'@runtime/../logs/sql/sql.log'.date('Ymd'),  
    17.                ],  
    18.             ],  
    19.               
    20.         ],  

    项目中调用

    1. $time = microtime(true);   
    2. $log = new FileTarget();   
    3. $log->logFile = Yii::$app->getRuntimePath() . '/logs/test.log'; //<span style="font-family: Arial, Helvetica, sans-serif;">getRuntimePath获取runtime路径</span>  
    4. $log->messages[] = ['test',1,'test',$time]; //第一个参数:输出的信息,第二个参数1:error,2:warning,3第三个可以告诉位置,第四个时间  
    5. $log->export();   




    文章总结到这里,后续会继续更新。

  • 相关阅读:
    DC中为什么要用Uniquify?
    hdu 1596 find the safest road
    hdu2112 HDU Today
    hdu 2066 一个人的旅行
    poj 3026 Borg Maze
    poj 1979 Red and Black
    poj 1321 棋盘问题
    hdu 1010 Tempter of the Bone
    hdu 4861 Couple doubi
    codeforces584B Kolya and Tanya
  • 原文地址:https://www.cnblogs.com/bjfy/p/5895735.html
Copyright © 2011-2022 走看看