model Admin.php

model(),tabName()是固定格式

<?php
/* 管理员模型
* --------------------------------------------
* @auther haoxiang
* --------------------------------------------
* @time 2015/8/3
*/
class Admin extends CActiveRecord{
public $password1;
public $password2;
public static function model($className = __CLASS__){
return parent::model($className);
}
public function tableName(){
return "{{admin}}";
}
/*
标签名字
*/
public function attributeLabels(){
return array(
'password' => '原始密码',
'password1' => '新密码',
'password2' => '确认密码'
);
}
/*
* 验证规则
* required 的字段就会有小星号表示必须
*/
public function rules(){
return array(
array('password','required', 'message'=>'原始密码必填'),
array('password1','required', 'message'=>'新密码必填'),
array('password2','required', 'message'=>'确认密码必填'),
array('password2','compare', 'compareAttribute'=>'password1','message'=>'两次密码不一致'),
array('password','check_password'),
);
}
/*
* 自定义验证规则
*/
public function check_password(){
$user = Yii::app()->user->name;
$userinfo = Admin::model()->find('username = :name',array(':name'=>$user));
if(md5($this->password) != $userinfo['password']){
$this->addError('password','用户名或密码错误');
}
}
}

在模板中的使用

<?php $form=$this->beginWidget('CActiveForm', array('enableClientValidation'=>true, 'clientOptions'=>array('validateOnSubmit'=>true))); ?>
<table class="table">
<tr>
<td class="th" colspan="10">修改密码</td>
</tr>
<tr>
<td>用户</td>
<td><?php echo Yii::app()->user->name ?></td>
</tr>
<tr>
<td><?php echo $form->labelEx($Admin, 'password') ?></td>
<td>
<?php echo $form->passwordField($Admin, 'password') ?>
<?php echo $form->error($Admin, 'password') ?>
</td>
</tr>
<tr>
<td><?php echo $form->labelEx($Admin, 'password1') ?></td>
<td>
<?php echo $form->passwordField($Admin, 'password1') ?>
<?php echo $form->error($Admin, 'password1') ?>
</td>
</tr>
<tr>
<td><?php echo $form->labelEx($Admin, 'password2') ?></td>
<td>
<?php echo $form->passwordField($Admin, 'password2') ?>
<?php echo $form->error($Admin, 'password2') ?>
</td>
</tr>
<tr>
<td colspan="10">
<input type="submit" class="input_button" value="修改" />
</td>
</tr>
</table>
<?php $this->endWidget() ?>

控制器

<?php
/*
后台用户模块
*/
class UserController extends Controller{
public function actionPasswd(){
$Admin = new Admin(); //加载模型
if(isset($_POST['Admin'])){
$Admin->attributes = $_POST['Admin'];
if($Admin->validate()){
//$Admin->addError('password','未知错误');
$userinfo = $Admin->model()->find('username = :name',array(':name'=>Yii::app()->user->name)); $password = md5($_POST['Admin']['password1']);
$result = $Admin->model()->updateByPk($userinfo->id,array('password'=>$password));
if($result){
Yii::app()->user->setFlash('success','修改成功');
}
}
}
$this->render('passwd',array('Admin'=>$Admin));
}
}

开启前台异步验证

<?php $form=$this->beginWidget('CActiveForm', array('enableClientValidation'=>true, 'clientOptions'=>array('validateOnSubmit'=>true))); ?>

规则列表

• boolean:  确保特性有一个布尔值。
• captcha: 确保特性值等于 CAPTCHA 中显示的验证码。
• compare:  确保特性等于另一个特性或常量。
• email: 确保特性是一个有效的Email地址。
• default: 指定特性的默认值。
• exist:  确保特性值可以在指定表的列中可以找到。
• file: 确保特性含有一个上传文件的名字。
• filter : 通过一个过滤器改变此特性。
• in:  确保数据在一个预先指定的值的范围之内。
• lengths 确保数据的长度在一个指定的范围之内。
• match: 确保数据可以匹配一个正则表达式。
• numerical:  确保数据是一个有效的数字。
• required:  确保特性不为空。
• type: 确保特性是指定的数据类型。
• unique:  确保数据在数据表的列中是唯一的。
• url:  确保数据是一个有效的 URL。

public function rules()
{
  return 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’,’numerical’, ‘integerOnly’=>true),
      array(‘title, content, status’, ‘required’),
      array(‘title’, ‘length’, ‘max’=>128),
      array(‘status’, ‘in’, ‘range’=>array(1,2,3)),
      array(‘tags’, ‘match’, ‘pattern’=>’/^[\w\s,]+$/’,‘message’=>’Tags can only contain word characters.’),
      array(‘tags’, ‘normalizeTags’),
      array(‘title, status’, ‘safe’, ‘on’=>’search’),
  );
}

YII 1.0模型标签与验证规则,前后台验证的更多相关文章

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

    原文:MVC验证05-自定义验证规则.验证2个属性值不等 本文体验2个属性值不等.即当一个属性输入值,另外一个属性输入的值不能和第一个属性值相等.相关文章包括: MVC验证01-基础.远程验证   M ...

  2. 对Yii 2.0模型rules的理解(load()无法正确装载数据)

    在实际开发中,遇到数据表新增字段而忘记了在对应模型中rules规则中添加新增的字段,而导致load()方法装载不到新增字段,导致新增字段无法写入数据库中.   解决办法:在新增字段后及时在对应模型ru ...

  3. laravel5.5 自定义验证规则——手机验证RULE

    相信很多小伙伴和我一样烦恼,laravel没有自带手机号的验证,每次验证手机号都要写正则这类的规则,每次都是repeat yourself!违背了编码的一个原则,就是Don't repeat your ...

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

    1.示例,验证规则和错误提示作为注解写在声明变量的地方 @NotNull private long id; @NotNull @Size(min = 2, max = 30,message=" ...

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

    提示:保存后才提示错误信息 自定义验证特性,继承ValidationAttribute并实现IClientValidatable 这次重写了基类的IsValid()方法的另外一个重载,因为该重载包含了 ...

  6. ThinkPhp5.0模型验证规则

    Tp5提供了模型数据规则的验证功能,用于在数据save或者update前验证数据的有效性.Tp5提供校验规则的类为\Think\Validate,默认提供的校验规则可以查看该文件. 在Model文件中 ...

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

    目录 概述 在模型中添加验证规则 自定义验证规则 伙伴类的使用 总结 系列文章 [Asp.net MVC]Asp.net MVC5系列——第一个项目 [Asp.net MVC]Asp.net MVC5 ...

  8. Thinkphp 1.验证规则 2.静态定义 3.动态验证

    一.验证规则 数据验证可以对表单中的字段进行非法的验证操作.一般提供了两种验证方式: 静态定 义($_validate 属性)和动态验证(validate()方法). //验证规则 array( ar ...

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

    validatebox已经实现的几个规则: 验证规则是根据使用需求和验证类型属性来定义的,这些规则已经实现(easyui API): email:匹配E-Mail的正则表达式规则. url:匹配URL ...

随机推荐

  1. ext3文件系统目录限制问题

    昨晚排查了在KVM的build系统中的一个问题,跟踪到后面发现在一个目录下mkdir创建目录失败.我手动试了一下,提示如下:cannot create directory `/home/master/ ...

  2. emacs format

    格式化源码是很常见的需求,emacs有个indent-region函数用于格式化选定的代码,前提是你处在某个非text mode下,如c-mode或者java-mode之类.如果要格式化整个文件,你需 ...

  3. DataSet和List<T> 泛型之间互相转换 (转载, 作者写的很好)

    /DataSet与泛型集合间的互相转换 //利用反射机制将DataTable的字段与自定义类型的公开属性互相赋值. //注意:从DataSet到IList<T>的转换,自定义类型的公开属性 ...

  4. CALayer & UIView 关系浅析

    原文链接:http://www.jianshu.com/p/8e6a313c158e 一.CALayer和UIView的关系 UIView显示在屏幕上归功于CALayer 可以说:UIView依赖CA ...

  5. Jackson最简单用法

    jackson的包在:https://yunpan.cn/cu2b6eMaBjFpz  访问密码 753f 代码: ObjectMapper objectMapper = new ObjectMapp ...

  6. JavaScript 中实现继承的方式(列举3种在前一章,我们曾经讲解过创建类的最好方式是用构造函数定义属性,用原型定义方法。)

    第一种:对象冒充 function ClassA(sColor) { this.color = sColor; this.sayColor = function () { alert(this.col ...

  7. Counting Haybales

    Counting Haybales 题目描述 Farmer John is trying to hire contractors to help rearrange his farm, but so ...

  8. PAT (Advanced Level) 1083. List Grades (25)

    简单排序. #include<cstdio> #include<cstring> #include<cmath> #include<vector> #i ...

  9. BNU OJ 51003 BQG's Confusing Sequence

    二进制++高精度取模 #include<cstdio> #include<cstring> #include<algorithm> using namespace ...

  10. JQuery实现仿腾讯的固定导航栏

    1.描述 窗口滚动一定高度之后才让导航栏固定 2.要点 浏览器滚动的事件:$(window).scroll(functiuon(){ 文档滚过的高度: $(doucment).scrollTop(); ...