Mam mały problem w procesie sprawdzania poprawności laravel. Chcę odrzucić nazwę użytkownika z miejscem takim, jak foo bar
. Po prostu chcę pozwolić foobar
bez spacji. Obecnie moja zasada to required|unique:user_detail,username
. Jakiej zasady mam użyć? dziękiSprawdzanie poprawności Laravel nie ma miejsca dla nazwy użytkownika
Odpowiedz
można przedłużyć walidator z własnych zasad niestandardowych:
Validator::extend('without_spaces', function($attr, $value){
return preg_match('/^\S*$/u', $value);
});
Następnie wystarczy użyć jak każda inna reguła:
required|without_spaces|unique:user_detail,username
Checkout docs na niestandardowe reguły sprawdzania oryginalności:
https://laravel.com/docs/5.2/validation#custom-validation-rules
Powinieneś używać wyrażenia regularnego z walidacją.
PHP:
required|unique:user_detail,username,'regex:/\s/'
Dzięki! Ale powinno to być 'regex:/^ \ S * $/u' – fzlrhmn
Dlaczego nie używasz alpha_dash
rule?
required|alpha_dash|unique:user_detail,username
Z dokumentacji:
Pole pod zatwierdzania może mieć znaki alfanumeryczne oraz jak łączniki i podkreślenia.
I nie pozwala na spacje.
alpha nie zezwoli na przykład na podkreślenia. – scrubmx
[alpha_dash] (https://laravel.com/docs/5.2/validation#rule-alpha-dash)? – huuuk
alpha_dash może działać, wszystko zależy od znaków, które chcesz dopuścić. Łańcuch podobny do: "(╯ ° □ °) ╯" również nie powiedzie się sprawdzanie poprawności alpha_dash – scrubmx
Dzięki! To działa jak urok! – fzlrhmn