我想在创建和更新用户时基于Yii在我的Web应用程序中使用密码重复字段。创建时我想要两个字段都需要,当更新时,用户可以将这些字段留空(密码将是相同的)或输入新密码并确认。我怎么能点到它?
答案 0 :(得分: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"),
...
);
}
现在,当创建新模型时,除非密码和 repeatpassword 属性匹配,否则模型将不会验证。如您所述,这适用于创建新记录,但您不想在更新上验证匹配的密码。要创建此功能,我们可以使用model scenarios
我们只需更改 repeatpassword 规则,如上所示另外还有一个parmanter:
...
array('repeatpassword', 'compare', 'compareAttribute'=>'password', 'message'=>"Passwords don't match",'on'=>'create'),
...
现在剩下要做的就是在为create函数声明你的模型时,使用:
$model = new MyModel('create');
而不是正常:
$model = new MyModel;