2016-07-21 2 views
1

Ich verwende die einfache durch Yii2 wie diese angebotene Gültigkeitsregel vergleichen:Yii2 vergleichen E-Mail ohne Groß- und Kleinschreibung

[confirm_email', 'compare', 'compareAttribute'=>'email', 'message'=>"Emails don't match"], 

Das Problem ist, dass diese Regel zwei E-Mails zu 100% einschließlich Case Sensitive vergleicht, was bedeutet, E-Mail @ Test. com und [email protected] wird Validierungsfehler generieren.

Gibt es eine Möglichkeit, diesen Case-Sensitive-Vergleich aus dieser Regel zu entfernen?

Antwort

0

Sie können benutzerdefinierte Validierung erstellen, wenn Sie möchten.

public function rules() 
{ 
    return [ 
     // an inline validator defined as the model method validateEmail() 
     ['email', 'validateEmail'], 
    ]; 
} 

public function validateEmail($attribute, $params) 
{ 
    if (strcasecmp($this->attribute, $this->confirm_email) == 0) { 
     $this->addError($attribute, 'Username should only contain alphabets'); 
    } 
} 

Es wird E-Mails mit binären Safe case-insensitive vergleichen.

0

strcasecmpnicht Mehrbytezeichen Griff, read this

Vorschlag ist strtolower()

Sie auch in yii's input filter, interessiert sein könnte verwenden Eingabe in Kleinbuchstaben zu umwandeln, wie folgt aus:

[ 
    // both email fields tolower 
    [['email', 'confirm_email'], 'filter', 'filter' => 'strtolower'], 

    // normalize "phone" input 
    ['phone', 'filter', 'filter' => function ($value) { 
     // normalize phone input here 
     return $value; 
    }], ] 
Verwandte Themen