2015-03-11 5 views
11

में मैं के रूप में मॉडल में नियमों में लिखा है:दोहराएँ पासवर्ड काम नहीं करता है Yii2

public $password_repeat; 

/** 
* @inheritdoc 
*/ 
public function rules() 
{ 
    return [ 
     .... 
     .... 
     ['password', 'required'], 
     ['password', 'string', 'min' => 6], 
     ['password_repeat', 'compare', 'compareAttribute'=>'password', 'message'=>"Passwords don't match" ], 
    ]; 
} 

अगर मैं Password और Password Repeat क्षेत्र में अलग अलग पासवर्ड का उपयोग, यह त्रुटि देता है। तो, इसका मतलब यह काम करता है। लेकिन समस्या यह है कि, अगर Password Repeat फ़ील्ड खाली है तो यह कोई त्रुटि नहीं देता है।

+1

आपको दोहराए गए पासवर्ड जैसे ['password_repeat', 'required'], – MKD

उत्तर

22

पासवर्ड_repeat के लिए एक आवश्यक टैग भी जोड़ें। नीचे

return [ 
     .... 
     ['password', 'required'], 
     ['password', 'string', 'min' => 6], 
     ['password_repeat', 'required'], 
     ['password_repeat', 'compare', 'compareAttribute'=>'password', 'message'=>"Passwords don't match" ], 
    ]; 
+0

के साथ आवश्यक उल्लेख करने की आवश्यकता है हमें 'Yii.1। *' में 'आवश्यक' का उपयोग न करने की आवश्यकता है। क्या आप मुझे बता सकते हैं कि हमें 'Yii2' में उपयोग करने की आवश्यकता क्यों है? – StreetCoder

+0

वाईआई और वाईआई 2 में बहुत से अनियंत्रित मतभेद हैं क्योंकि yii2 को स्क्रैच से स्वतंत्र रूप से बनाया जा रहा है। यह सिर्फ उनमें से एक है। – arkoak

+0

ठीक है धन्यवाद :)। मुझे यह – StreetCoder

8

दिखाया एक और दृष्टिकोण गलत पर $ skipOnEmpty चर सेट करने के लिए किया जाता है:

return [ 
.... 
    ['password', 'required'], 
    ['password', 'string', 'min' => 6], 
    ['password_repeat', 'compare', 'compareAttribute'=>'password', 'skipOnEmpty' => false, 'message'=>"Passwords don't match"], 
]; 

यह अगर पासवर्ड उस में एक मूल्य है आप केवल दोहराने पासवर्ड आवश्यक फ़ील्ड बनाने के लिए अनुमति देता है को लाभ मिलता है भी।

+0

शानदार - धन्यवाद। किसी और के लिए यह कोशिश करने के लिए, आपको मॉडल में सार्वजनिक चर जोड़ने की आवश्यकता है अन्यथा फॉर्म एक त्रुटि घोषित करेगा। आईई .: सार्वजनिक $ password_repeat – DrBorrow

संबंधित मुद्दे