YII 1.0模型标签与验证规则,前后台验证
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。
{
return array(
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模型标签与验证规则,前后台验证的更多相关文章
- MVC验证05-自定义验证规则、验证2个属性值不等
原文:MVC验证05-自定义验证规则.验证2个属性值不等 本文体验2个属性值不等.即当一个属性输入值,另外一个属性输入的值不能和第一个属性值相等.相关文章包括: MVC验证01-基础.远程验证 M ...
- 对Yii 2.0模型rules的理解(load()无法正确装载数据)
在实际开发中,遇到数据表新增字段而忘记了在对应模型中rules规则中添加新增的字段,而导致load()方法装载不到新增字段,导致新增字段无法写入数据库中. 解决办法:在新增字段后及时在对应模型ru ...
- 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()方法的另外一个重载,因为该重载包含了 ...
- ThinkPhp5.0模型验证规则
Tp5提供了模型数据规则的验证功能,用于在数据save或者update前验证数据的有效性.Tp5提供校验规则的类为\Think\Validate,默认提供的校验规则可以查看该文件. 在Model文件中 ...
- [Asp.net MVC]Asp.net MVC5系列——在模型中添加验证规则
目录 概述 在模型中添加验证规则 自定义验证规则 伙伴类的使用 总结 系列文章 [Asp.net MVC]Asp.net MVC5系列——第一个项目 [Asp.net MVC]Asp.net MVC5 ...
- Thinkphp 1.验证规则 2.静态定义 3.动态验证
一.验证规则 数据验证可以对表单中的字段进行非法的验证操作.一般提供了两种验证方式: 静态定 义($_validate 属性)和动态验证(validate()方法). //验证规则 array( ar ...
- easyui的validatebox重写自定义验证规则的几个实例
validatebox已经实现的几个规则: 验证规则是根据使用需求和验证类型属性来定义的,这些规则已经实现(easyui API): email:匹配E-Mail的正则表达式规则. url:匹配URL ...
随机推荐
- ext3文件系统目录限制问题
昨晚排查了在KVM的build系统中的一个问题,跟踪到后面发现在一个目录下mkdir创建目录失败.我手动试了一下,提示如下:cannot create directory `/home/master/ ...
- emacs format
格式化源码是很常见的需求,emacs有个indent-region函数用于格式化选定的代码,前提是你处在某个非text mode下,如c-mode或者java-mode之类.如果要格式化整个文件,你需 ...
- DataSet和List<T> 泛型之间互相转换 (转载, 作者写的很好)
/DataSet与泛型集合间的互相转换 //利用反射机制将DataTable的字段与自定义类型的公开属性互相赋值. //注意:从DataSet到IList<T>的转换,自定义类型的公开属性 ...
- CALayer & UIView 关系浅析
原文链接:http://www.jianshu.com/p/8e6a313c158e 一.CALayer和UIView的关系 UIView显示在屏幕上归功于CALayer 可以说:UIView依赖CA ...
- Jackson最简单用法
jackson的包在:https://yunpan.cn/cu2b6eMaBjFpz 访问密码 753f 代码: ObjectMapper objectMapper = new ObjectMapp ...
- JavaScript 中实现继承的方式(列举3种在前一章,我们曾经讲解过创建类的最好方式是用构造函数定义属性,用原型定义方法。)
第一种:对象冒充 function ClassA(sColor) { this.color = sColor; this.sayColor = function () { alert(this.col ...
- Counting Haybales
Counting Haybales 题目描述 Farmer John is trying to hire contractors to help rearrange his farm, but so ...
- PAT (Advanced Level) 1083. List Grades (25)
简单排序. #include<cstdio> #include<cstring> #include<cmath> #include<vector> #i ...
- BNU OJ 51003 BQG's Confusing Sequence
二进制++高精度取模 #include<cstdio> #include<cstring> #include<algorithm> using namespace ...
- JQuery实现仿腾讯的固定导航栏
1.描述 窗口滚动一定高度之后才让导航栏固定 2.要点 浏览器滚动的事件:$(window).scroll(functiuon(){ 文档滚过的高度: $(doucment).scrollTop(); ...