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‘]);
            }
时间: 2024-11-05 23:36:26

yii2 rules验证规则,ajax验证手机号码是否唯一的相关文章

MVC验证05-自定义验证规则、验证2个属性值不等

原文:MVC验证05-自定义验证规则.验证2个属性值不等 本文体验2个属性值不等.即当一个属性输入值,另外一个属性输入的值不能和第一个属性值相等.相关文章包括: MVC验证01-基础.远程验证   MVC验证02-自定义验证规则.邮件验证   MVC验证03-自定义验证规则.禁止输入某些值   MVC验证04-自定义验证规则.日期范围验证 自定义验证特性,继承ValidationAttribute并实现IClientValidatable 这次重写了基类的IsValid()方法的另外一个重载,因

Sping POJO中如何添加验证规则和验证消息提示

1.示例,验证规则和错误提示作为注解写在声明变量的地方 @NotNull private long id; @NotNull @Size(min = 2, max = 30,message="姓名在2~30个字符之间") private String name; @NotNull @Min(message="年龄至少15岁",value=15) private Integer age; @NotEmpty @Email(message="邮箱格式不对&qu

ASP.NET MVC验证 - 自定义验证规则、验证2个属性值不等【待验证】

提示:保存后才提示错误信息 自定义验证特性,继承ValidationAttribute并实现IClientValidatable 这次重写了基类的IsValid()方法的另外一个重载,因为该重载包含了验证上下文ValidationContext,从中可以获取属性及属性值. using System.ComponentModel.DataAnnotations; using System.Globalization; using System.Web.Mvc; namespace MvcValid

JQuery validate验证规则

//定义中文消息 var cnmsg = { required: "必选字段", remote: "请修正该字段", email: "请输入正确格式的电子邮件", url: "请输入合法的网址", date: "请输入合法的日期", dateISO: "请输入合法的日期 (ISO).", number: "请输入合法的数字", digits: "只能输入整数

easyui的validatebox重写自定义验证规则的几个实例

validatebox已经实现的几个规则: 验证规则是根据使用需求和验证类型属性来定义的,这些规则已经实现(easyui API): email:匹配E-Mail的正则表达式规则. url:匹配URL的正则表达式规则. length[0,100]:允许在x到x之间个字符. remote['http://.../action.do','paramName']:发送ajax请求需要验证的值,当成功时返回true. 拓展:自定义验证规则 自定义验证规则,需要重写$.fn.validatebox.def

[Asp.net MVC]Asp.net MVC5系列——在模型中添加验证规则

目录 概述 在模型中添加验证规则 自定义验证规则 伙伴类的使用 总结 系列文章 [Asp.net MVC]Asp.net MVC5系列——第一个项目 [Asp.net MVC]Asp.net MVC5系列——添加视图 [Asp.net MVC]Asp.net MVC5系列——添加模型 [Asp.net MVC]Asp.net MVC5系列——从控制器访问模型中的数据 [Asp.net MVC]Asp.net MVC5系列——添加数据 概述 上篇文章中介绍了添加数据,在提交表单的数据的时候,我们需

ASP.NET MVC基于标注特性的Model验证:一个Model,多种验证规则

原文:ASP.NET MVC基于标注特性的Model验证:一个Model,多种验证规则 对于Model验证,理想的设计应该是场景驱动的,而不是Model(类型)驱动的,也就是对于同一个Model对象,在不同的使用场景中可能具有不同的验证规则.举个简单的例子,对于一个表示应聘者的数据对象来说,针对应聘的岗位不同,肯定对应聘者的年龄.性别.专业技能等方面有不同的要求.但是ASP.NET MVC的Model验证确是Model驱动的,因为验证规则以验证特性的形式应用到Model类型及其属性上.这样的验证

yii2 rules 验证规则

yii2  框架定义的约束 public $builtInValidators = [ 'boolean' => 'yii\validators\BooleanValidator', 'captcha' => 'yii\captcha\CaptchaValidator', 'compare' => 'yii\validators\CompareValidator', 'date' => 'yii\validators\DateValidator', 'default' =>

Yii2 rules验证规则

Rules验证规则:  required : 必须值验证属性||CRequiredValidator 的别名, 确保了特性不为空. [['字段名1','字段名2'],required]    //字段1 2 必填 [['字段名'],required,'requiredValue'=>'必填值','message'=>'提示信息'];  email : 邮箱验证||CEmailValidator 的别名,确保了特性的值是一个有效的电邮地址. ['email', 'email'];  match 

Yii CModel中rules验证规则

array( array(‘username’, ‘required’),  array(‘username’, ‘length’, ‘min’=>3, ‘max’=>12),  array(‘password’, ‘compare’, ‘compareAttribute’=>’password2′, ‘on’=>’register’),  array(‘password’, ‘authenticate’, ‘on’=>’login’), array(‘Price’,’num