博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Yii实现Password Repeat Validate Rule
阅读量:6305 次
发布时间:2019-06-22

本文共 2171 字,大约阅读时间需要 7 分钟。

在使用Yii时遇到这样的需求:在一个注册的页面输入两次密码,并验证两次输入是否一致。可是password的repeat的字段在数据库 并不存在。问题来了,如何创建一个password_repeat的属性,进行密码验证。最偷懒的方法就是利用yii自带的验证器。在这里记录下实现的方 法。

假设项目结构如下

protected/models/User.php

proteced/controllers/SiteController.php

protected/views/site/forgot.php

首先在User.php添加一个public的password_repeat属性,该属性会自动映射到rules中。注意on属性,是决定rule应用的场景,默认的场景是insert。在这里,我应用在forgot场景。

class User extends CActiveRecord{
public $password_repeat; public function rules() {
// NOTE: you should only define rules for those attributes that // will receive user inputs. return ( ... ('password_repeat', 'required' , 'on' => 'forgot'), ('password', 'compare', 'compareAttribute'=>'password_repeat' ,'on'=>'forgot'),  ); }}

在SiteController.php中的actionForgot方法中,添加一个User的model。

public function actionForgotPassword(){
$model = new User(); //set current scenario $model->scenario = 'forgot'; $User = Yii::app()->getRequest()->getParam('User'); if($User){
$model->attributes = $User; Helper::performAjaxValidation($model); .... } $this->render('forgot',( 'model' => $model));}//Helper的ajax 验证方法,这个在默认生成的controller可以找到static function performAjaxValidation($model) {
if(($_POST['ajax']) && $_POST['ajax']==='user-form') {
echo CActiveForm::validate($model); Yii::app()->end(); } }

在视图文件中forgot.php,添加password_repeat字段。

beginWidget('CActiveForm', ( 'id'=>'user-form', 'enableAjaxValidation'=>true,)); ?>
  • label($model,'password' , array( 'label' => 'Your New Password')); ?>
    passwordField($model,'password',array('size'=>32,'maxlength'=>32)); ?>
    error($model,'password'); ?>
  • labelEx($model,'password_repeat' , array( 'label' => 'Repeat Password')); ?>
    passwordField($model,'password_repeat',array('size'=>32,'maxlength'=>32)); ?>
    error($model,'password_repeat'); ?>

这样就实现了password的验证了。

转载于:https://www.cnblogs.com/guolanzhu/p/3510209.html

你可能感兴趣的文章
在 Linux 下使用 fdisk 扩展分区容量
查看>>
结合AlphaGo算法和大数据的量化基本面分析法探讨
查看>>
如何在 Ubuntu Linux 16.04 LTS 中使用多个连接加速 apt-get/apt
查看>>
《OpenACC并行编程实战》—— 导读
查看>>
机器学习:用初等数学解读逻辑回归
查看>>
如何在 Ubuntu 中管理和使用逻辑卷管理 LVM
查看>>
Oracle原厂老兵:从负面案例看Hint的最佳使用方式
查看>>
把自己Github上的代码添加Cocoapods支持
查看>>
C语言OJ项目参考(2493)四则运算
查看>>
零基础入门深度学习(二):神经网络和反向传播算法
查看>>
find和xargs
查看>>
数据结构例程—— 交换排序之快速排序
查看>>
WKWebView代理方法解析
查看>>
IOS定位服务的应用
查看>>
[SMS&WAP]实例讲解制作OTA短信来自动配置手机WAP书签[附源码]
查看>>
IOS中图片(UIImage)拉伸技巧
查看>>
【工具】系统性能查看工具 dstat
查看>>
基于zepto或jquery的手机端弹出框成功,失败,加载特效
查看>>
php引用(&)
查看>>
关押罪犯
查看>>