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 ...
随机推荐
- MySQL 分库分表方案,总结的非常好!
前言 公司最近在搞服务分离,数据切分方面的东西,因为单张包裹表的数据量实在是太大,并且还在以每天60W的量增长. 之前了解过数据库的分库分表,读过几篇博文,但就只知道个模糊概念, 而且现在回想起来什么 ...
- 【JavaScript】插件参数的写法
就是实现复制的一个过程 (function() { var Explode = function(container, params) { 'use strict'; var n = this; if ...
- numpy初始化
一般的初始化就是用zeros这种去初始化,但你想测试一些函数的时候,如果是全0其实不好测试 可以先用python本身初始化一个list,然后转换成numpy的array a = [1.1,1.5,1. ...
- SOE 部署错误 ClassFactory cannot supply requested class问题及解决方案
一.问题描述 虽然SOE开发已经老早出来了(ArcGIS 10.1 不再支持DCOM开发,所以以往的基于AO+WebService需要转变思路),不过由于跟工作关联性不是很大,一直未系统学习过.网上下 ...
- PAT——1035. 插入与归并
根据维基百科的定义: 插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列.每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置.如此迭代直到全部元素有序. 归并排序进行如下迭 ...
- 【luogu P4180 严格次小生成树[BJWC2010]】 模板
题目链接:https://www.luogu.org/problemnew/show/P4180 这个题卡树剖.记得开O2. 这个题inf要到1e18. 定理:次小生成树和最小生成树差距只有在一条边上 ...
- HDU 1213(裸并查集)(无变形)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1213 How Many Tables Time Limit: 2000/1000 MS (Java/ ...
- 去掉C#中Guid.NewGuid().ToString()自动生成的短横线
别人设计的ID类型为varchar(32),使用Guid.NewGuid().ToString()自动生成ID值,本来大小32位妥妥的.可C#在生成的ID值中自动生成了几根小横杠,你说是不是讨嫌. 岂 ...
- B+树全面解析
B+树的特征与结构 有k个子树的中间节点包含有k个元素(B树中是k-1个元素),每个元素不保存数据,只用来索引,所有数据都保存在叶子节点. 所有的叶子结点中包含了全部元素的信息,及指向含这些元素记录的 ...
- SQL-还原数据库,数据库提示正在还原中的处理办法
还原数据库时,提示还原成功,可是数据库列表中该数据库显示正在还原中: 执行此命令即可: RESTORE DATABASE EnterPriseBuilding WITH RECOVERY 1. 至少有 ...