Yii2笔记
Yii 维护页面
- 网站维护,入口文件index.php 直接echo
- 在应用的配置文件(
man.php
)中加入以下代码:
registerJsFile()
注册用户,当输入用户名的时候,直接判断是否存在,而不是提交再判断
那么这种做法是,开启ActiveForm
的enableAjaxValidation
然后在controller
里添加一个ajax
验证字段
|
|
权限流程
- 菜单管理添加菜单,在
数据
选项中添加{"icon":"fa fa-rss"}
可以更换图标,要用双引号
- 路由列表 – 添加路由
- 权限管理新增权限,把新添加的菜单权限放进去,并分配路由
- 角色管理 – 把新增的菜单分配给角色
添加新的应用
- 根目录下Copy一份backend 应用改名为blogapp
- 打开environments/index.php 增加其初始化工作。(开发环境和生产环境里面配置如下
|
|
- 根目录 **environments/**中
dev/
和prod/
下各copy一份backend命名为blogapp
即可 common/config/bootstrap.php
里添加Yii::setAlias('@blogapp', dirname(dirname(__DIR__)) . '/blogapp');
- 有关应用
blogapp
文件夹里所有文件,有backend
关健字全改成blogapp
。才样,才能使用这个独立应用, - 最重要的一步: 在
服务端
和本地
都要进行一次初始化
,即更新一下入口文件个和配置,windows使用init
,linux 使用./init
Yii 验证码的使用
在
site/contact
下有默认的验证码可以参考
现在给注册用户页面添加一个验证码的功能:
- Form表单(
frontend/models/SignupForm
):
|
|
- 控制器(如果上面没有指定captchaAction,可以在这块位置来定义,现在定义在
SiteController
)
|
|
- 视图页面(
view/site/signup
):
|
|
- 验证码总是不正确:
testLimit
含义:相同验证码出现的次数。默认为3。(小于等于0的值意味着不限制)为1,或小于3,这种情况下,相同的验证码只能出现一次,而用户如果开启了ajax验证的话,填写的时候ajax验证一次已达到上限1次,提交的时候再验证一次,他会判断是否大于了testLimit的值,第二次验证testLimit会加1,显然大于了1,这时会重新生成验证码,从而出现验证码老是不正确
另一个原因:因为开启了enableAjaxValidation
,通过查看请求连接发现:虽然关闭验证码的enableAjaxValidation
,但是,当点击提交的时候,还是会发送ajax请求(来验证整个输入的表单),然而,因为我们在controller
里添加了一个验证,所以验证成功之后就刷新了验证码,导致提交时候的验证就失效了
大概的流程如下:
① 点击提交
② 开启了enableAjaxValidation
(不开启就不会报错)的时候会带着整个表单进行验证
③ controller
中有一句话
④ 这个位置因为验证成功不会报错,所以又继续进行$model->signup
.然而,在这个函数中,有这么一句话
⑤ 只需要吧最后一步的验证中的验证码验证取消即可
⑥ 所以验证码报错,可以取消最后一步验证
,也可以直接取消enableAjaxValidation
附上验证码的验证过程
|
|
- 设置参考链接1–关于设置
;
刷新网页的时候自动刷新验证码,前提是开启enableClientValidation
;
参考链接2–关于出错的链接
当然,Form表单的
enableClientVaidation
默认就是开启的
composer 更改为中国镜像
- 修改 composer 的全局配置文件(推荐方式)
打开命令行窗口(windows用户)或控制台(Linux、Mac 用户)并执行如下命令:composer config -g repo.packagist composer https://packagist.phpcomposer.com
- 修改当前项目的
composer.json
配置文件:
进入你的项目的根目录(也就是 composer.json 文件所在目录),执行如下命令:composer config repo.packagist composer https://packagist.phpcomposer.com
上述命令将会在当前项目中的composer.json
文件的末尾自动添加镜像的配置信息(你也可以自己手工添加):
checkbox默认选中
假设status
要显示成复选框,在controller层:
view层:
这样默认就会选中,在checkedbox
的参数中添加'checked'=>true
是无效的
控制台带选项带参数写法
|
|
使用:yii hello/all -r q,w,e,r
或者yii hello/all --r q,w,e,r
输出结果都是翻转后的数组,区别是一个横杠表示使用选项别名,两个表示使用全称的选项。
api中三种认证方式的区别
HttpBasicAuth
: access token 作为一个用户名被传递。这种情况只适合“当access token可以安全的存储在API 接收端”的情况, 比如 调用 API 的是一个在服务器上运行的程序QueryParamAuth
:access token 在 API URL 中作为一个查询参数被传递,比如 https://example.com/users?access-token=123456789
因为多数的 Web 服务器会保存 query 参数在服务器日志中, 这个方法应该主要是用于响应无法使用 HTTP 头部信息来发送 access token 的 JSONP 请求的。OAuth 2
:遵照 OAth2.0 协议, 调用者从一个 授权服务器 上获取 access token, 再通过 HTTP Bearer Tokens
发送给 Api 服务器。
使用migration新建数据库迁移
新建:yii migrate/create <name>
执行:yii migrate/up
批量插入
是批量插入,不是多次插入
composer全局设置
composer config -g 全局命令 设置
AR模型中的with
查询多个数据,建议使用with,比如
以上代码将执行101 条SQL,第一条 SQL 查询语句取回100个客户,然后, 每个客户要执行一条 SQL 查询语句以取回该客户的所有订单。如果使用了with,只需要两条sql语句:
|
|
更详细的介绍:http://www.yiichina.com/doc/guide/2.0/db-active-record# 看第九条 延迟加载和及时加载