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 ...
随机推荐
- C#入门经典(第五章-1)
- 使用compass更高效的编辑css --- 图片精灵
compass是sass的一个库,关系相当于js中的jq.比较可惜的是compass的文档比较混乱 看的不太舒服,下面是compass的文档地址,有兴趣的可以去看看 http://compass-st ...
- 一道js题
<script> var a = 5; function test(){ this.a = 10; a = 15 this.func = function(){ var a = 20 ; ...
- CodeForces 76E Points
给出n个点,求任意两点间距离的平方和. 暴力显然超时,可以把公式写出来,化简一下,发现预处理一下后缀和就可以o(n)出解了. #include<cstdio> #include<cs ...
- [iOS]C语言技术视频-11-指针变量练习一(交换值)
下载地址: 链接: http://pan.baidu.com/s/1pJIcGm3 密码: s83p
- Apriori算法第一篇
摘要: Apriori算法是产生k项高频项目组的一般手段.算法概要:首先产生k项高频项目集合Lk,自身链接形成k+1项的项目结合C(k+1),然后剪枝(去掉以前去掉的不满足支持度的高频),生成K=1项 ...
- SQL truncate 、delete与drop区别
SQL truncate .delete与drop区别 相同点: 1.truncate和不带where子句的delete.以及drop都会删除表内的数据. 2.drop.truncate都是DDL语句 ...
- openstack controller ha测试环境搭建记录(二)——配置corosync和pacemaker
corosync.conf请备份再编辑:# vi /etc/corosync/corosync.conf totem { version: 2 token: 10000 t ...
- CDN概念+作用+特点+原理
CDN的全称是Content Delivery Network,即内容分发网络.其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络"边缘" ...
- selenium 多线程
http://www.cnblogs.com/dingmy/p/3438084.html