模型标签与验证规则,前后台验证

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。

时间: 2024-08-15 06:57:13

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

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

[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系列——添加数据 概述 上篇文章中介绍了添加数据,在提交表单的数据的时候,我们需

JQuery validate验证规则

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

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

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

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

YII开发技巧分享——模型(models)中rules自定义验证规则

YII的models中的rules部分是一些表单的验证规则,对于表单验证十分有用,在相应的视图(views)里面添加了表单,在表单被提交之前程序都会自动先来这里面的规则里验证,只有通过对其有效的限制规则后才能被提交,可以很有效地保证表单安全和信息的有效性.还是给大家具体说明一下: 以下是视图(views)部分的简单代码: <?php $form=$this->beginWidget('CActiveForm', array( 'id'=>'tag-form', 'enableAjaxVa

2016/05/15 ThinkPHP3.2.2 表单自动验证实例 验证规则的数组 直接写在相应的控制器里

使用TP 3.2框架 验证规则也可以写到模型里,但感觉有些麻烦, 一是有时候不同页面验证的方式会不一样, 二是看到这个   Add  事件里的代码,就清楚要接收什么数据,如何验证数据能够在第一眼有个大致了解 ①控制器代码页 1 <?php 2 namespace Home\Controller; 3 use Think\Controller; 4 5 header("Content-type: text/html; charset=utf-8"); 6 7 class AddCo