jarober77
21.03.2021, 20:31:31
Witam!
Przykładowa sytuacja: uzytkownik wypelnia formularz i chcemy by w ajaxie od razu sprawdzic czy podany uzytkownik nie wystepuje juz w bazie.
Oczywiscie validacja formularza przy zapisie dziala dobrze.
W klasie FormRequest mamy funkcjerules i messages. Jednak walidacja odpalana jest dla calego formularza.
Jaki jest zgodny ze sztuką sposob zrobienia tego w larawerze?
LowiczakPL
22.03.2021, 10:40:06
Czy to w Laravelu czy w dowolnym innym frameworku albo czystym PHP, moje sprawdzone sposoby to:
robisz event na submit i 1.
robisz event na pole e-mail i jak user z niego wyjdzie to 1.
1. blokujesz submit
2. sprawdzasz najpierw czy user jest nie występuje w bazie jak jest true to pozwalasz na submit
jarober77
22.03.2021, 12:59:46
No zgoda to logiczne, tak trzeba zrobic. Tylko mi chodzi o to SPRAWDZENIE czy user istnieje powinno byc z wykorzystaniem utworzonej juz rule w obiekcie RequestFrom. Tak bylo by elegancko. Oczywiscie moge utworzyć funkcje w controlerze, ktora bede ajaxsem wywilywac i tam ponownie uruchomic Validation tylko dla tego pola ale bede musial regule validacji pola ponownie kopiować. Mam nadzieje ze jest jakis sposob na to by wykorzystac juz RequestFrom i utworzone w nim reguły w funkcji rules()
viking
22.03.2021, 15:17:11
Zależy jak masz napisane i co walidujesz. Jeżeli sprawdzanie zajętego loginu to oddzielna akcja to i powinna mieć nowy walidator. Jeżeli masz 100 pól to nie będziesz kombinować jak je ominąć żeby to jedno przeszło. Możesz się posłużyć sometimes|required i nullable.
LowiczakPL
22.03.2021, 20:59:13
nie możesz po prostu zrobić tego w ten sposób, jak napisałem?
public function checkEmail(Request $request){
$email = $request->input('email');
$isExists = \App\User::where('email',$email)->first();
if($isExists){
return response()->json(['exists' => true]);
}else{
return response()->json(['exists' => false]);
}
}
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.