Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][Laravel]Walidacja z uwzględnieniem zmian.
Forum PHP.pl > Forum > Przedszkole
Generic
Pracuję we freamworku laravel, ale nie znalazłem nigdzie w jaki sposób można za jego pomocą ustrzec się przed sytuacjami, w której użytkownik próbuje dodać podmienione dane. Przykładowo za pomocą inspect zmienia rozmiar lub id produktu. Jeżeli się mylę to zwracam honor i prosiłbym o podzielenie się linkiem do rozwiązania. Przy okazji napisałem walidację działającą na prostych instrukcjach. Chciałbym poznać waszą opinie na temat poniższego rozwiązania i ewentualnie co przydałoby się poprawić.
  1. public function create(Request $request, $id)
  2. {
  3. // Request validation
  4.  
  5. $size = $request->size;
  6.  
  7. if($size != null) {
  8. $validate_product = Product::where('id', $id)->get();
  9. $validate_size = ProductSize::whereHas('availableSizes', function ($query) use ($id, $size) {
  10. $query->where('size', '=', $size)->where('product_id', '=', $id);
  11. })->get();
  12.  
  13. if($validate_product->count() > 0 && $validate_size->count() > 0) {
  14. $validation = true;
  15. } else {
  16. $validation = false;}
  17. } else {
  18. $validate_product = Product::where('id', $id)->get();
  19. $validate_size = ProductSize::whereHas('availableSizes', function ($query) use ($id) {
  20. $query->where('product_id', '=', $id);
  21. })->get();
  22. if($validate_product->count() > 0 && $validate_size->count() == 0) {
  23. $validation = true;
  24. } else {
  25. $validation = false;}
  26. }
  27.  
  28. if($validation == true) {
  29.  
  30. foreach($validate_product as $product)
  31.  
  32. Cart::add(array(
  33. 'id' => $product['id'].$request->size,
  34. 'name' => $product['title'],
  35. 'price' => $product['price'],
  36. 'quantity' => $request->quantity,
  37. 'attributes' => array(
  38. 'thumbnail' => $product['img_1'],
  39. 'size' => $request->size
  40. )
  41. ));
  42.  
  43. return back();
  44. } else {
  45. return back()->with('error', 'Wystąpił problem, spróbuj ponownie.');
  46. }
  47. }
markonix
https://laravel.com/docs/5.7/validation np. https://laravel.com/docs/5.7/validation#rule-in

W Laravel przy nazewnictwie zmiennych stosuje się camelCase.
Generic
Cytat(markonix @ 3.02.2019, 19:43:25 ) *
https://laravel.com/docs/5.7/validation np. https://laravel.com/docs/5.7/validation#rule-in

W Laravel przy nazewnictwie zmiennych stosuje się camelCase.


Używam walidacji do sprawdzenia poprawności formularzy np. czy mail jest poprawnie zapisany, jednak w tym przypadku muszę sprawdzić dane czy faktycznie to co przychodzi z requesta istnieje w mojej bazie.
viking
A patrzyłeś https://laravel.com/docs/5.7/validation#rule-exists
Dodatkowo zamiast brudzić w kontrolerze masz https://laravel.com/docs/5.7/validation#cre...g-form-requests + własne validatory.
markonix
Cytat(Generic @ 4.02.2019, 09:37:33 ) *
Używam walidacji do sprawdzenia poprawności formularzy np. czy mail jest poprawnie zapisany, jednak w tym przypadku muszę sprawdzić dane czy faktycznie to co przychodzi z requesta istnieje w mojej bazie.

No to byś kliknął konkretny link to dokładnie być dostał regułę, którą byś przetłumaczył na polski i dokładnie dostał odpowiedź na Twoją potrzebę.
In to uniwersalna metoda, ewentualnie jak poprzednik exists, która jest skrótem, u mnie akurat rzadko się sprawdza, bo często trzeba dodać jakieś warunki, a tylko In na to pozwala.
Generic
@viking, @markonix kiedy zaimplementowałem podesłane przez was rozwiązanie uśmiałem się dosłownie z samego z siebie. To jak w łatwy sposób można było to rozwiązać jest dla mnie niesamowite. Mam zły nawyk, kombinowania nad własnymi rozwiązaniami zapominając że pracuje we freamworku zwłaszcza kiedy nie rozumiem do końca problemu. Dziękuję, że nakierowaliście mnie na dobrą ścieżkę i przepraszam za te moje banały, ale całą wiedze czerpie na chwilę obecną tylko z internetu.
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.