2012-11-13 36 views
8

मैं उपयोगकर्ता के निर्माण और अद्यतन करते समय वाईआई के आधार पर अपने वेब-एप्लिकेशन में पासवर्ड दोहराना फ़ील्ड चाहता हूं। जब मैं बनाना चाहता हूं कि मैं दोनों फ़ील्ड की आवश्यकता हो और अपडेट करते समय, उपयोगकर्ता इन फ़ील्ड को खाली छोड़ सकता है (पासवर्ड वही होगा) या नया पासवर्ड दर्ज करें और इसकी पुष्टि करें। मैं इसे कैसे डॉट कर सकता हूं?वाईआई पासवर्ड दोहराना फ़ील्ड

+2

http://www.yiiframework.com/wiki/277/model-password-confirmation-field/ – Stu

उत्तर

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'), 
... 

सब अब क्या करना छोड़ दिया है, जब अपने मॉडल की घोषणा समारोह बनाने के लिए पर, का उपयोग करें:

$model = new MyModel('create'); 
सामान्य के बजाय

:

$model = new MyModel; 
+0

आपके वर्तमान सेटअप के बारे में एक गोचा यह है कि उपयोगकर्ता बाद में अपनी पासवर्ड अपडेट करने का प्रयास कर रहा है। लेकिन इसके अलावा, अच्छा लग रहा है। – acorncom

+0

वैसे आम तौर पर आप शायद उपयोगकर्ता को दो बार अपना पासवर्ड इनपुट करने के लिए कहेंगे तो वे अपडेट कर रहे थे। मैंने इसके लिए परिदृश्य के साथ भी खाता लिया है ($ model = new MyModel ('create');) –

+0

आप sceario नाम को अपडेट के रूप में उपयोग कर सकते हैं जो प्रत्येक बार वाईआई एआर मॉडल बनाता है। और इसलिए आपका मॉडल '$ मॉडल = नया माईमोडेल बन गया;' –