wangerting1988 2011-09-09 10:46:40 4713次浏览 8条回复 0 0 0

我想做一个用户修改资料,当填写完要修改的内容,必须要在输一边当前密码

  • 回复于 2011-09-09 10:47 举报

    把验证规则指定为require就可以了!

  • 回复于 2011-09-09 15:38 举报

    我现在可以 不为空了,但是我怎么那用户输入的密码和数据库的密码比对呢!

  • 回复于 2011-09-09 16:15 举报

    在afterFind方法中把原来的密码提出来,比如赋值给$_oldpassword;
    然后用compare验证器比对一下就行了。

  • 回复于 2011-09-09 16:29 举报

    是在function rules()里对比吗?

  • 回复于 2011-09-09 16:35 举报

    是的,如果不用afterFind,自定义一个验证器也可以的。

  • 回复于 2011-09-09 16:51 举报

    说的有点专业了,我还是没明白,可以给写个例子吗?:)

  • 回复于 2011-09-09 17:45 举报

    我试过,没成功!能给我一个例子吗!刚学yii对这个还不是很了解.:)

  • 回复于 2011-09-13 15:11 举报

    验证规则里这么写

    public function rules()
    {
        return array(
            ....
            array('password', 'PasswordValidator'),
            ....
        );
    }
    

    然后在application.components里加一个 PasswordValidator.php 文件(注意大小写)

    class PasswordValidator extends CValidator
    {
        public function validateAttribute($o, $a)
        {
            $v = $o->$a;
            if($v !== 'some defined value or others') {
                $o->addError($a, '密码不正确');
            }
        }
    }
    

    代码完全未经过测试,准确性、正确性概不负责。

您需要登录后才可以回复。登录 | 立即注册