Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][Laravel]Walidacja z uwzględnieniem zmian.
Generic
post 3.02.2019, 19:28:50
Post #1





Grupa: Zarejestrowani
Postów: 224
Pomógł: 0
Dołączył: 31.10.2012

Ostrzeżenie: (10%)
X----


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. }


Ten post edytował Generic 3.02.2019, 19:30:03
Go to the top of the page
+Quote Post
markonix
post 3.02.2019, 19:43:25
Post #2





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

Ostrzeżenie: (0%)
-----


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.

Ten post edytował markonix 3.02.2019, 19:48:04


--------------------
Go to the top of the page
+Quote Post
Generic
post 4.02.2019, 09:37:33
Post #3





Grupa: Zarejestrowani
Postów: 224
Pomógł: 0
Dołączył: 31.10.2012

Ostrzeżenie: (10%)
X----


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.
Go to the top of the page
+Quote Post
viking
post 4.02.2019, 09:52:05
Post #4





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


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.


--------------------
Go to the top of the page
+Quote Post
markonix
post 4.02.2019, 11:43:57
Post #5





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

Ostrzeżenie: (0%)
-----


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.


--------------------
Go to the top of the page
+Quote Post
Generic
post 4.02.2019, 16:09:48
Post #6





Grupa: Zarejestrowani
Postów: 224
Pomógł: 0
Dołączył: 31.10.2012

Ostrzeżenie: (10%)
X----


@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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 22:38