2015-03-11 18 views
11

çalışmaz: Ben Password ve Password Repeat alanında farklı şifreyi kullanıyorsanıztekrarlayın Şifre ben modelinde kurallarını yazdım 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" ], 
    ]; 
} 

, bu hata veriyor. Yani, bu işe yarıyor demek. Ancak sorun şu ki, Password Repeat alanı boşsa herhangi bir hata vermez.

+1

['password_repeat', 'required'], – MKD

cevap

22

Parola_didi için gerekli bir etiketi de ekleyin. Diğer bir yaklaşım false $ skipOnEmpty değişkeni ayarlamak için

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

gibi yinelenen parola ile belirtmeniz gerekir. 'Yii.1. * 'Içinde' required' kullanılmamalıyız. Bana neden Yii2'de kullanmamız gerektiğini söyleyebilir misin? – StreetCoder

+0

Yii ve Yii2, yii2'nin sıfırdan bağımsız olarak oluşturulmasından dolayı çok fazla belgelenmemiş farklılığa sahiptir. bu sadece onlardan biri. – arkoak

+0

tamam teşekkürler :). Anladım – StreetCoder

8

altına almaktadır Gösterilen: Bu şifre içinde bir değeri varsa, yalnızca gerekli tekrarlama Şifre alanını yapmak için izin yararı vardır

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

çok.

+0

parlak - teşekkürler. Bunu deneyen herkes için, modele bir genel değişken eklemeniz gerekir, aksi halde form bir hata bildirir. I.e .: public $ password_repeat – DrBorrow