在創建和更新用戶時,我想在基於Yii的Web應用程序中設置密碼重複字段。創建時,我希望這兩個字段都是必需的,當更新時,用戶可以將這些字段留空(密碼將相同)或輸入新密碼並進行確認。我怎樣才能點出它?Yii密碼重複字段
回答
首先,你需要創建一個模型中的一個新的屬性(在這個例子中,我們把它叫做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'),
...
所有剩下現在要做的,就是聲明你的模型時在爲創建功能,使用方法:
$model = new MyModel('create');
,而不是正常的:
$model = new MyModel;
有關當前設置的一個疑問是,如果用戶在稍後嘗試更新密碼。但除此之外,看起來不錯。 – acorncom
一般來說,如果用戶更新的話,你可能會要求用戶輸入兩次密碼。無論如何,我在場景中對此進行了解釋($ model = new MyModel('create');) –
您可以使用sceario名稱作爲更新,每次Yii創建AR模型時都是默認值。所以你的模型成爲'$ model = new MyModel;' –
- 1. 密碼字段
- 2. Python的 - 重複字符的密碼
- 3. 凱撒密碼重複字母
- 4. 防止在密碼中重複字符
- 5. Base64encoding密碼字段
- 6. Java密碼字段
- 7. C++密碼字段
- 8. 「重複」字段
- 9. 重複字段
- 10. 從密碼字段獲取密碼
- 11. Yii的加密和解密密碼
- 12. Yii在addError上重置字段值
- 13. 驗證密碼Yii框架
- 14. sql重複字段
- 15. 用Yii加密的密碼問題
- 16. 填充空密碼字段
- 17. TcxMaskEdit的密碼字段
- 18. 密碼字段顏色
- 19. ASP:NET確認密碼字段
- 20. 隱藏密碼字段
- 21. 檢索密碼字段
- 22. 顯示密碼字段只
- 23. RowEditing中的密碼字段
- 24. IE8.0上的密碼字段
- 25. 密碼文本字段
- 26. pyforms的密碼字段?
- 27. 散列密碼字段
- 28. 密碼字段標籤
- 29. Javascript密碼字段比較
- 30. AlertDialog中的密碼字段
http://www.yiiframework.com/wiki/277/model-password-confirmation-field/ – Stu