2017-06-28 4 views
5

Ich habe $data =['identifier' = 'xxxxxxxxxx']; eingegeben, und möchte die 10 in der Tabelle info primäre id Spalte speichern.Wie wird die Validierungsregel von Laravel in der benutzerdefinierten Validierungsregel verwendet?

Ich muss validieren, bevor Sie es speichern. Regel unique:info, id ist hier nicht geeignet, also möchte ich eine benutzerdefinierte Validierungsregel schreiben. Und in der benutzerdefinierten Validierungsregel I encrypt() der Wert zuerst, dann verwenden Sie die unique Validierungsregel.

Ich weiß, wie eine benutzerdefinierte Validierungsregel geschrieben wird, aber wie wird die Validierungsregel unique in meiner benutzerdefinierten Validierungsregel verwendet?

+1

Hat https://laravel.com/docs/5.4/validation#custom-validation-rules nicht ausreichen? – ceejayoz

+0

@ceejayoz bitte lesen Sie meine Frage mehr. Hier schreibe ich keine benutzerdefinierte Validierungsregel. Ich möchte die einzigartige Regel erweitern. –

+0

Was ist der Anfangswert von 'id'? tut es 'int' dann wird es verschlüsselt ?! – SaidbakR

Antwort

2

Rules „einzigartig“ und „existiert“, um die DatabasePresenceVerifier Klasse. Sie müssen also die eindeutige Regel nicht wirklich erweitern, sondern nur auf diesen Präsenzverifizierer zugreifen. Zum Beispiel:

Validator::extend('encrypted_unique', function ($attribute, $value, $parameters, $validator) { 
    list ($table, $column, $ignore_id) = $parameters; // or hard-coded if fixed 
    $count = $validator->getPresenceVerifier()->getCount($table, $column, encrypt($value), $ignore_id); 
    return $count === 0; 
}); 

Dann können Sie es wie gewohnt verwenden:

'identifier' => "encrypted_unique:table,column,$this_id" 
1

Angenommen, Sie ein ModuleRequest haben, die Ihre Eingaben überprüft, Sie diese Methode in dieser Klasse schreiben kann

protected function validationData() 
{ 
    $all = parent::validationData(); 
    $all['email'] = encrypt($all['email']); 
    return $all; 

} 
+0

Ich weiß, das funktioniert. Ich möchte diese 'encrypt()' in der Validierungsregel verwenden, wie in meiner Frage angegeben. –

Verwandte Themen