8

创建和更新用户时,我希望在基于 Yii 的 Web 应用程序中重复密码字段。创建时我希望这两个字段都是必需的,更新时,用户可以将这些字段留空(密码相同)或输入新密码并确认。我该怎么点呢?

4

1 回答 1

19

首先,您需要在模型中创建一个新属性(在本例中,我们称之为repeatpassword):

class MyModel extends CActiveRecord{
    public $repeatpassword;
    ...

接下来,您需要定义一个规则以确保它与您现有的密码属性匹配:

    public function rules() {
            return array(
                array('password', 'length', 'max'=>250),
                array('repeatpassword', 'compare', 'compareAttribute'=>'password', 'message'=>"Passwords don't match"),
                ...
            );
    }

现在,当创建新模型时,除非密码和重复密码属性匹配,否则模型不会验证。正如您所提到的,这对于创建新记录很好,但您不想在update上验证匹配的密码。要创建此功能,我们可以使用模型场景

如上所示,我们只需更改重复密码规则即可获得额外的参数:

...
array('repeatpassword', 'compare', 'compareAttribute'=>'password', 'message'=>"Passwords don't match",'on'=>'create'),
...

现在剩下要做的就是在为 create 函数声明模型时,使用:

$model = new MyModel('create');

而不是正常的:

$model = new MyModel;
于 2012-11-13T17:30:32.907 回答