yii2 rules验证规则,ajax验证手机号码是否唯一
<?php namespace frontend\models; use Yii;
use yii\base\Model; /**
* Signup form
*/
class SignupForm extends Model
{
public $mobile;
public $captcha;
public $password; /**
* @inheritdoc
*/
public function rules()
{
return [
[['mobile', 'captcha', 'password'], 'trim'],
[['mobile', 'captcha', 'password'], 'required'], [['mobile'], 'match', 'pattern' => '/^1[3|4|5|7|8][0-9]{9}$/'],
[['mobile'], 'unique', 'targetClass' => '\common\models\User', 'message' => '该手机号已被注册!'], [['password'], 'match', 'pattern' => '/^\S+$/'],
[['password'], 'string', 'length' => [6, 32]], [['captcha'], 'captcha'],
];
} /**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'mobile' => '手机号',
'captcha' => '验证码',
'password' => '密码'
];
} public function writeSession()
{
$session = Yii::$app->session;
$session->open();
$session['mobileSignupTimeout'] = time() + 600;
$session['mobileSignup'] = $this->mobile;
$session['mobileSignupPassword'] = $this->password;
}
}
UserController.php
if ($step !== '2') {
$model = new SignupForm();
$model->load(Yii::$app->request->post());
if (Yii::$app->request->isAjax) {
Yii::$app->response->format = Response::FORMAT_JSON;
return ActiveForm::validate($model);
}
if (Yii::$app->request->isPost && $model->validate()) {
$model->writeSession();
if ($this->_sendMsg($model->mobile)) {
Yii::info("用户注册发送短信验证码成功!手机号:{$model->mobile}");
Yii::$app->session->setFlash('sentSuccess');
} else {
Yii::warning("用户注册发送短信验证码失败!手机号:{$model->mobile},说明:" . Yii::$app->smser->message);
Yii::$app->session->setFlash('failedToSend', '验证码发送失败,请您再试一次!');
}
return $this->redirect(['signup', 'step' => '2']);
}
signup.php
if ($step !== '2') {
$model = new SignupForm();
$model->load(Yii::$app->request->post());
if (Yii::$app->request->isAjax) {
Yii::$app->response->format = Response::FORMAT_JSON;
return ActiveForm::validate($model);
}
if (Yii::$app->request->isPost && $model->validate()) {
$model->writeSession();
if ($this->_sendMsg($model->mobile)) {
Yii::info("用户注册发送短信验证码成功!手机号:{$model->mobile}");
Yii::$app->session->setFlash('sentSuccess');
} else {
Yii::warning("用户注册发送短信验证码失败!手机号:{$model->mobile},说明:" . Yii::$app->smser->message);
Yii::$app->session->setFlash('failedToSend', '验证码发送失败,请您再试一次!');
}
return $this->redirect(['signup', 'step' => '2']);
}
yii2 rules验证规则,ajax验证手机号码是否唯一的更多相关文章
- MVC验证05-自定义验证规则、验证2个属性值不等
原文:MVC验证05-自定义验证规则.验证2个属性值不等 本文体验2个属性值不等.即当一个属性输入值,另外一个属性输入的值不能和第一个属性值相等.相关文章包括: MVC验证01-基础.远程验证 M ...
- laravel5.5 自定义验证规则——手机验证RULE
相信很多小伙伴和我一样烦恼,laravel没有自带手机号的验证,每次验证手机号都要写正则这类的规则,每次都是repeat yourself!违背了编码的一个原则,就是Don't repeat your ...
- Sping POJO中如何添加验证规则和验证消息提示
1.示例,验证规则和错误提示作为注解写在声明变量的地方 @NotNull private long id; @NotNull @Size(min = 2, max = 30,message=" ...
- ASP.NET MVC验证 - 自定义验证规则、验证2个属性值不等【待验证】
提示:保存后才提示错误信息 自定义验证特性,继承ValidationAttribute并实现IClientValidatable 这次重写了基类的IsValid()方法的另外一个重载,因为该重载包含了 ...
- Django_Form验证(二),ajax验证
还是一个简单的html提交页面,ajax提交就不需要form表单了: <p><input id="a" type="text" name=&q ...
- JQuery validate验证规则
//定义中文消息 var cnmsg = { required: “必选字段”, remote: “请修正该字段”, email: “请输入正确格式的电子邮件”, url: “请输入合法的网址”, d ...
- easyui的validatebox重写自定义验证规则的几个实例
validatebox已经实现的几个规则: 验证规则是根据使用需求和验证类型属性来定义的,这些规则已经实现(easyui API): email:匹配E-Mail的正则表达式规则. url:匹配URL ...
- ThinkPhp5.0模型验证规则
Tp5提供了模型数据规则的验证功能,用于在数据save或者update前验证数据的有效性.Tp5提供校验规则的类为\Think\Validate,默认提供的校验规则可以查看该文件. 在Model文件中 ...
- Thinkphp 1.验证规则 2.静态定义 3.动态验证
一.验证规则 数据验证可以对表单中的字段进行非法的验证操作.一般提供了两种验证方式: 静态定 义($_validate 属性)和动态验证(validate()方法). //验证规则 array( ar ...
- [Asp.net MVC]Asp.net MVC5系列——在模型中添加验证规则
目录 概述 在模型中添加验证规则 自定义验证规则 伙伴类的使用 总结 系列文章 [Asp.net MVC]Asp.net MVC5系列——第一个项目 [Asp.net MVC]Asp.net MVC5 ...
随机推荐
- DateTimePicker用法
将DateTimePicker的Format属性中加入日期格式设成 'yyyy-MM-dd HH:mm',注意大小写 , 将kind设置为dtkTime即可,可以在每次Form onShow时将Dat ...
- activeMQ的安装和使用
什么是ActiveMQ? 一款开源的JMS具体实现,是一个易于使用的消息中间件,一个消息容器 安装 下载 官方网站:http://activemq.apache.org/ 解压 linux下的安装,解 ...
- vue-loader是什么?使用它的用途有哪些?
vue-loader是解析 .vue 文件的一个加载器,跟 template/js/style转换成 js 模块: 用途:js可以写es6.style样式可以scss或less:template可以加 ...
- React之生命周期
哈喽,这是我的第一篇博客,请大家多多关照~ 追根溯源:What's the lifeCycle? 生命周期函数指在某一时刻组件会自动调用执行的函数: React生命周期概览: 接下来我们就着生命周期的 ...
- TCP/IP具体解释--TCP首部的TimeStamp时间戳选项
TCP应该是以太网协议族中被应用最为广泛的协议之中的一个,这里就聊一聊TCP协议中的TimeStamp选项.这个选项是由RFC 1323引入的,该C建议提交于1992年.到今天已经足足有20个年头.只 ...
- 【JMeter】【性能测试】服务器性能监控
下载插件 1.访问网址http://jmeter-plugins.org/downloads/all/,下载三个文件.其中JMeterPlugins-Standard和JMeterPlugins-Ex ...
- Python递归优化方法
递归栈溢出 Python的递归调用栈的深度有限制,默认深度为998,可以通过sys.getrecursionlimit()查看. 针对递归栈溢出,我们可以将默认深度设置为大一些,这样不会报错,但是再大 ...
- 爬虫请求库——selenium
selenium模块 selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题.selenium的缺点是效率会变得很慢. sel ...
- Postman教程
1.Postman的介绍 Postman是一款功能强大的用于发送 HTTP 请求的 Chrome插件 .做web页面开发和测试的人员应该都知道!其主要特点:创建 + 测试:创建和发送任何的HTTP请求 ...
- ssh工具自动化命令
SCP命令 scp [options] SRC... DEST/ 两种方式: scp [options] [user@]host:/sourcefile /destpath scp [options ...