Yii2.0 技巧总结
View部分
1. 使用ActiveField中的hint生成提示文字
<?= $form->field($model, 'freightAddedFee')->textInput()->hint('大于0的整数') ?>

2. 文本框添加placeholder属性,其实这个本来就是html5带的属性。
<?= $form->field($model, 'mobile', $input_class)->textInput(['maxlength' => 60,'placeholder' => '11位数字']) ?>

3. 用activeForm生成的元素不让出现label
<?= $form->field($model, 'skuType1')->textInput()->label(false) ?>
4. 使用GridView,如果数据库中保存的是图片地址,在前台显示成图片可以使用format,并添加图片样式
[
'label' => '头像',
'format' => ['image',['class' => 'thumbnail_image']],
'value' => 'avatarUrl',
],
Controller 部分
1. 跳转回上次的地址
return $this->redirect(Yii::$app->request->referrer);
Model 部分
1. 通过中间表关联查询
public function getVendorNickName(){
return $this->hasOne(User::className(), ['id' => 'userId'])
->viaTable(BaseVendor::tableName(), ['id' => 'vendorId']);
}
参见:http://www.yiiframework.com/doc-2.0/guide-db-active-record.html#relations-with-junction-table
2. 查询语句使用join时为表起别名。起别名可以防止冲突,因为有时候会join一张表两次。
下面的例子为user表起了u1的别名
$query->joinWith(['vendorNickName' => function ($q) {
$q->where('u1.nickname LIKE "%' . $this->vendorNickName . '%"')
->from(User::tableName().' u1');
}]);
生成的SQL类似:
SELECT `za_order`.* FROM `za_order`
LEFT JOIN `za_user_vendor`
ON `za_order`.`vendorId` = `za_user_vendor`.`id`
LEFT JOIN `za_user` `u1`
ON `za_user_vendor`.`userId` = `u1`.`id`
WHERE u1.nickname LIKE "%一号微店%"
配置和components
1. 1分钟配置站点出错自动发告警邮件功能。
我们知道站点出错时,Yii2会记录日志 可能会在存放在 \frontend\runtime\logs,Yii2 自带swiftmailer。我们可以通过配置修改Log的target。指定是以文本存储本地还是发送邮件。
具体见下面的代码。你需要修改邮箱相关配置信息。
更多信息见 文档
'components' => [
'user' => [
//.....
],
'log' => [
'traceLevel' => YII_DEBUG ? 3 : 0,
'targets' => [
[
'class' => 'yii\log\FileTarget',
'levels' => ['error', 'warning'],
],
[
'class' => 'yii\log\EmailTarget',
'levels' => ['error'],
//'categories' => ['yii\db\*'],
'message' => [
'from' => ['no_reply@qq.com'],
'to' => ['xx@qq.com'],
'subject' => basename(dirname(__DIR__)) .' errors in XX site',
],
'categories' => ['yii\db\*', 'yii\web\HttpException:*'] // 只处理数据库和请求导致的错误
'except' => ['yii\web\HttpException:404'], // 排除404,不然的话你会发现你的邮箱里全塞满了这些邮件
],
],
],
'mailer' => [
'class' => 'yii\swiftmailer\Mailer',
// viewPath 不使用
'viewPath' => '',
// send all mails to a file by default. You have to set
// 'useFileTransport' to false and configure a transport
// for the mailer to send real emails.
'useFileTransport' => false,
'transport' => [
'class' => 'Swift_SmtpTransport',
'host' => 'smtp.qq.com',
'username' => 'xxx@qq.com',
'password' => 'your_password',
'port' => '465',
'encryption' => 'ssl',
],
],
参考:http://www.kkh86.com/it/yii2-adv/guide-base-modify-jquery.html
Yii2.0 技巧总结的更多相关文章
- nginx1.9.4 +php 5.5.29+yii2.0配置手册
nginx1.9.4 +php 5.5.29+yii2.0配置手册 目录 一. php5.5.29安装配置 2 二. nginx1.9.4安装配置 2 三. yii2.0 ...
- 【Yii系列】Yii2.0基础框架
缘起 因为一个月的短暂停留,我在给朋友搞事情,所以Yii系列的文章耽搁了很长时间,现在又重拾当时的知识,给大伙好好撸下这一系列的博客 提起Yii,虽然是国外的开发者搞的,但是它的作者是华人,这才是让我 ...
- Yii2.0
Yii2.0基础框架 缘起 因为一个月的短暂停留,我在给朋友搞事情,所以Yii系列的文章耽搁了很长时间,现在又重拾当时的知识,给大伙好好撸下这一系列的博客 提起Yii,虽然是国外的开发者搞的,但是 ...
- Yii2.0基础框架
前言:最近在用php写一个项目的接口,所以需要学习一下Yii的框架,也在这里记录一下. 整体结构 ssets文件夹:assets的作用是方便模块化,插件化的,一般来说出于安全原因不允许通过url访问p ...
- Yii2.0.7 限制user module登录遇到的问题
在Yii2.0.6的时候我是在以下文件通过以下方法实现的. frontend/modules/user/Module.php namespace frontend\modules\user; clas ...
- yii2.0归档安装方法
我前几天用composer安装 一直没成功 我就用归档的方法安装了 所以这篇文字只帮助那些用归档方法安装的朋友 Yii是一个高性能的,适用于开发WEB2.0应用的PHP框架. Yii自带了丰富的功 ...
- [moka同学笔记]三、Yii2.0课程笔记(魏曦老师教程)关联字段增加搜索
关联字段增加搜索 post表关联adminuser表,通过post.author_id adminuser.id关联,在YII2.0生成搜索,关联字段搜索时,需要输入关联字段author的id才能搜 ...
- Yii2.0高级框架数据库增删改查的一些操作(转)
yii2.0框架是PHP开发的一个比较高效率的框架,集合了作者的大量心血,下面通过用户为例给大家详解yii2.0高级框架数据库增删改查的一些操作 --------------------------- ...
- yii2.0框架安装心得
yii2.0安装心得 能够搜索到这篇文章的朋友相信是对yii框架有兴趣的,但是我不得不吐槽的是,这个安装过程确实让人头疼,接下来就让大家见证一下这个纠结的过程 根据官网的说法,安装这个框架需要用到co ...
随机推荐
- 【[HEOI2014]大工程 】
可能是虚树板子题了 首先先把虚树建出来,但是这里和那道虚树的入门题不一样,这里所有的询问点都得在虚树里,所以不会存在那种直接不如栈的点 之后我们考虑一下这个三个要求的东西 第一个操作我们需要统计虚树上 ...
- 6、Spring Cloud -熔断器Hystrix
6.1.什么是Hystrix 在分布式系统中.服务与服务之间的依赖错综复杂,一种不可避免的情况就是某些服务 出现故障,导致依赖于它们的其他服务出现远程调度的线程阻塞. Hystrix是Netfli ...
- ethereumjs/ethereumjs-blockchain-1-简介和API
https://github.com/ethereumjs/ethereumjs-blockchain SYNOPSIS概要 A module to store and interact with b ...
- PHP扩展模块redis安装
PHP扩展redis模块安装 当我们安装好php之后可能会忘记装一些模块,或者需要增加模块的时候我们可以使用扩展模块安装. 查看php加载了哪些模块,使用命令 /usr/local/php/bin/p ...
- web测试--测试点
转载自:51Testing 首先,查找需求说明.网站设计等相关文档,分析测试需求,制定测试计划,确定测试范围和测试策略,一般包括以下几个部分:功能性测试:界面测试:性能测试:数据库测试:安全性测试:兼 ...
- iOS利用block实现链式编程方法(Objective-C链式编程)
objc利用block实现链式编程方法 因为不好读.block和其他语言的匿名函数一样,很多程序员刚开始很难主动去用他. 本文描述block作为属性的实际使用,看懂block,并讲解如何利用block ...
- object-c 常用判断null的宏定义,如果是null直接返回@""
#define checkNull(__X__) (__X__) == [NSNull null] || (__X__) == nil ? @"" : [NSString stri ...
- git如何到精通
git教程 目录 一.版本控制概要 1.1.什么是版本控制 1.2.常用术语 1.3.常见的版本控制器 1.4.版本控制分类 1.4.1.本地版本控制 1.4.2.集中版本控制 1.4.3.分布式 ...
- [Golang学习笔记] 06 程序实体3 类型断言和类型转换
类型断言: 语法:<目标类型的值>,<布尔参数> := <表达式>.( 目标类型 ) // 安全类型断言<目标类型的值> := <表达式>. ...
- kubernetes基本概念和术语
一. kubernetes是什么 kubernetes是一个全新得基于容器技术得分布式架构领先方案.是google Borg得一个开源版本.Borg是google得一个久负盛名得内部使用得大规模集群管 ...