yii2整理
对于yii的研究,还没有那么深刻,之所以在这种情况下写,还是考虑到了后来入门人没有中文资料,而又无可下手的尴尬境地。希望对新手和我自己多一份帮助吧。总结几个自己的经验吧。环境的配置我就不做解释了。这个可以从网上找。
1关于定义系统参数的问题
在项目中config的目录中,分别有params-local.php和params.php的俩个php文件,这俩个文件了可以设置你所需要的全局的参数。具体目录是放在common、frontend、backend的config里,看你所需了。这俩个文件的区别,在我看来,就是是否是本地化的区别。如果有参数需要根据网站部署环境而改变,最好还是放在params-local.php里,params-local.php最好不要放在项目版本库里。params.php里的参数还是要存放比较稳定的参数。另外,在这俩个里边设置了参数,调用是没区别的。举个例子:
在params-local.php中
<?php
return [
'front_url' => 'http://www.aaa.cn/'
];
在params.php中
<?php return [
'adminEmail' => 'admin@example.com',
];
在项目中调用都可以以Yii::$app->params['front_url']或Yii::$app->params['adminEmail']来调用
2,创建自己的小组件(其实就是可以把公用的方法组合一下。方便程序调用)
在common下创建components目录,在此目录下新建Functions.php文件。Function类代码如下
<?php namespace common\components; use Yii;
use yii\base\Component; class Functions extends Component { public function test($t="") {
echo $t;
} }
此类必须继承Component。
然后再common/config/main.php中的components节点,增加
'functions' => [
'class' => 'common\components\Functions'
]
加完之后,代码结构形如
<?php
return [
'timeZone' => 'Asia/Shanghai',
'vendorPath' => dirname(dirname(__DIR__)) . '/vendor',
'components' => [
'cache' => [
'class' => 'yii\caching\FileCache',
],
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
],
'functions' => [
'class' => 'common\components\Functions'
]
], ];
这时候调用就简单了。利用Yii::$app->functions->test("aaa");
3.ActiveForm开发时候需要的问题
对于ActiveForm的验证,实际使用当中总结出一个问题:
<?= $form->field($model, 'description', ['template' => '{input}'])->textInput() ?>对于这段代码尤其需要注意,template里千万不能出现不完整标签,否则验证失效,即['template' => '<td>{input}</td>']这样,验证是不起作用的,但是['template' => '<table><tr><td>{input}</td></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增加
'log' => [
'traceLevel' => YII_DEBUG ? 3 : 0,
'targets' => [
[
'class' => 'yii\log\FileTarget',
'levels' => ['error', 'warning'],
],
//在原配置的基础上,增加以下配置(新增一个target)
[
'class' => 'yii\log\FileTarget',
'levels' => ['error', 'warning','info'],
'logVars'=>[],
//表示以yii\db\或者app\models\开头的分类都会写入这个文件
'categories'=>['yii\db\*','app\models\*'],
//表示写入到文件sql.log中年月日记录日志
'logFile'=>'@runtime/../logs/sql/sql.log'.date('Ymd'),
],
], ],
项目中调用
$time = microtime(true);
$log = new FileTarget();
$log->logFile = Yii::$app->getRuntimePath() . '/logs/test.log'; //<span style="font-family: Arial, Helvetica, sans-serif;">getRuntimePath获取runtime路径</span>
$log->messages[] = ['test',1,'test',$time]; //第一个参数:输出的信息,第二个参数1:error,2:warning,3第三个可以告诉位置,第四个时间
$log->export();
文章总结到这里,后续会继续更新。
yii2整理的更多相关文章
- Yii2的框架笔记整理
1 .request的获取方式 $request = Yii::$app->request; 2. get参数的获取方式 $id = $request->get('id',1);获取get ...
- [moka学习笔记]yii2.0数据库查询的多种方法(未完待整理)
方法一:(使用model) $modelCommunityMail = CommunityMail::find()->where(['com_id'=>$id])->all(); 方 ...
- yii2 实战教程之如何安装
作者:白狼 出处:http://www.manks.top/document/install.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则 ...
- Yii2所提倡的配置管理方案
无意中看到Yii2提供的高级应用模板,里面将入口文件与环境相关配置项放到独立的目录下的相应文件中.这应该算是一种比较理想的应用配置管理方案了. 以前整理过一种思路:http://www.cnblogs ...
- yii2.0高级框架配置时打开init.bat秒退的解决方法 (两种方法)
第一种: 这几天刚接触到yii2.0框架,在配置advanced版本时运行init.bat初始化文件时老是闪退: 用cmd运行该文件时显示:The OpenSSL PHP extension is r ...
- [moka同学笔记]yii2场景的使用(摘录)
前半部分为自己使用的过程,下边为转载的,具体地址见:http://blog.sina.com.cn/s/blog_88a65c1b0101j717.html 1.在model中 public func ...
- 推荐!国外程序员整理的 PHP 资源大全
推荐!国外程序员整理的 PHP 资源大全 2014/08/02 · PHP, 工具与资源 · 8.5K 阅读 · 1 评论· php 分享到:0 与<YII框架>不得不说的故事—安全篇 R ...
- YII2配置多语言
我的YII2版本是2.0.7, 设置多语言时和其他教程有不同的地方, 所以整理如下 1. 在一个controller里面写一个调用i18n的语句, 比如actionIndex echo \Yii::t ...
- Yii/Yii2:查询返回以某特定列为索引(键)的数组
在Yii1.x中,要想查询语句返回以特定列为键(key)的数组数据,代码例如以下(下述样例以表主键为返回数组索引): $users = User::model()->findAll(array( ...
随机推荐
- Linux Socket编程(不限Linux)
"一切皆Socket!" 话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket. --有感于实际编程和开源项目研究. 我们深谙信息交流的价值,那网络中进程之间如何通信 ...
- sentinel搭建redis集群经验总结
一.protected-mode默认情况下,redis node和sentinel的protected-mode都是yes,在搭建集群时,若想从远程连接redis集群,需要将redis node和se ...
- 《Java虚拟机并发编程》学习笔记
对<Java虚拟机并发编程>这本书真的是相见恨晚.以前对并发编程只是懂个皮毛,这本书让我对并发编程有了一个全新的认识.所以把书上的知识点做下笔记,以便以后复习使用. 并发与并行 仔细说来, ...
- 读javascript高级程序设计07-引用类型、Object、Array
一.引用类型 ECMAScript是支持面向对象的,可以通过引用类型描述一类对象所具有的属性和方法. 创建对象实例的方法时是用new 操作符加构造函数:var p=new Person(). 二.Ob ...
- ios基础篇(二十)—— UIBezierPath绘制
UIBezierPath类可以创建基于矢量的路径,可以定义简单的形状,如椭圆或者矩形,或者有多个直线和曲线段组成的形状. 一.UIBezierPath使用: 1.创建path: 2.添加路径到path ...
- 移动端web之像素基础
px:css pixels逻辑像素,浏览器使用的抽象单位 dp,pt :device independent pixels 设备无关像素 dpr:devicePixelRatio 设备像素缩放比 计算 ...
- [转]SecureCRT连接主机时,无法从键盘输入
问题: SecureCRT连接主机时,无法从键盘输入 答案: 最近通过超级终端或者SecureCRT连接主机时,都只能读取设备信息,但是无法从键盘输入,进入不了配置状态,后来仔细检查了配置,居然是流控 ...
- NPOI 操作Excel
关于NPOI NPOI是POI项目的.NET版本,是由@Tony Qu(http://tonyqus.cnblogs.com/)等大侠基于POI开发的,可以从http://npoi.codeplex. ...
- servlet执行流程
视频地址:http://www.imooc.com/video/5550 1-6 用户输入地址:localhost:8080/MyFirstServletDemo/index.jsp (My ...
- JQuery特效分享网站
各种jquery特效分享,可以去上面找资源. http://www.jqshare.com/