码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-08-19 13:01:05      阅读:132      评论:0      收藏: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。

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

标签:

原文地址:http://www.cnblogs.com/mr-amazing/p/4741746.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!