2017-06-28 99 views
5

Mam dane wejściowe $data =['identifier' = 'xxxxxxxxxx']; i chcę zapisać encrypt($data['identifier']) do kolumny tabeli info pierwotnej.jak używać zasady sprawdzania poprawności laravel w niestandardowej regule sprawdzania poprawności?

Muszę sprawdzić przed zapisaniem. Reguła unique:info, id nie jest tutaj odpowiednia, dlatego chcę napisać niestandardową regułę sprawdzania poprawności. I w niestandardowej regule sprawdzania poprawności, I encrypt() wartość najpierw, a następnie użyj zasady sprawdzania poprawności unique.

W jaki sposób napisać niestandardową regułę sprawdzania poprawności, ale jak korzystać z reguły sprawdzania poprawności unique w mojej niestandardowej regule sprawdzania poprawności?

+1

Czy https://laravel.com/docs/5.4/validation#custom-validation-rules nie wystarczą? – ceejayoz

+0

@eejayoz proszę przeczytać moje pytanie więcej. Tutaj nie piszę niestandardowej reguły sprawdzania poprawności. Chcę rozszerzyć tę wyjątkową zasadę. –

+0

Jaka jest wartość początkowa "id"? czy to "int", to będzie zaszyfrowane ?! – SaidbakR

Odpowiedz

2

Rules „unikalne” i „istnieje” użyć klasy DatabasePresenceVerifier. Nie musisz więc rozszerzać unikatowej reguły, wystarczy uzyskać dostęp do weryfikatora obecności. Na przykład:

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; 
}); 

Wtedy można go używać jak zwykle:

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

Załóżmy, że masz ModuleRequest który sprawdza poprawność wprowadzanych danych, można napisać tę metodę w tej klasie

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

} 
+0

Wiem, że to działa. Chcę użyć tego 'encrypt()' w regule sprawdzania poprawności, jak podano w moim pytaniu. –