Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Poprawne wczytanie $_POST do klasy
k8dz
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 5.02.2020

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


Mam formularz i po kliknięciu wyślij potrzebuję przekazać jego wartości do klasy, aby móc na nich wykonać operacje. Zastanawiam się jak to poprawnie powinno być wykonane. Czy takie rozwiązanie jest poprawne, czy powinienem to jakoś inaczej zrobić?

  1. $cena_plyty = 25; //domyślna wartość zmiennej
  2.  
  3. if ( isset($_POST['cena_plyty']) and is_numeric($_POST['cena_plyty']))
  4. {
  5. $cena_plyty = $_POST['cena_plyty'];
  6. }
  7.  
  8. $wycena = new Wycena;
  9. $wycena->ustaw_cene($cena_plyty);
  10. echo $wycena->wyswietl_wycene();
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
vokiel
post
Post #2





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


Językowo bym się trzymał angielskich nazw, jeśli już chcesz PL to Walidacja nie Validacja. Ale nadal, Validator brzmi lepiej ;-)

Najczęściej walidatory przyjmują reguły, na podstawie których sprawdzają czy pole ma poprawą wartość.

Możesz np zrobić tak, że przekazujesz całą tablicę $_POST i dla nazw pól ustawiasz warunki, np not_empty, int, string, max_lengt: 16, min_length: 8, unique, match_regex itd.
Następnie w walidatorze bierzesz pole, sprawdzasz czy istnieje w $_POST, czy jest wymagane, czy jego format jest zgodny ze wzorcem. Jeśli nie to zbierasz błędy i na koniec zwracasz true/false plus tablica błędów.

Same sprawdzanie formatu możesz zrobić w jakiejś osobnej klasie, w której zdefiniujesz sobie metody na każde porównanie, w stylu:
  1. class Rule {
  2. public function notEmpty($item)
  3. {
  4. return !empty($item);
  5. }
  6.  
  7. public function matchRegex($item, string $regex)
  8. {
  9. return preg_match($item, $regex);
  10. }
  11. }


A do walidatora dodajesz przez:
  1. $validator = new Validator();
  2. $validator->addRule('price', new Rule('not_empty'));
  3. $validator->addRule('price', new Rule('decimal'));
  4.  
  5. $validator->addRule('quantity', new Rule('not_empty'));
  6. $validator->addRule('quantity', new Rule('greater_than', 0));
  7.  
  8. if (!$validator->valid()){
  9. // Wróć do formularza, podświetl błędne pola.
  10. }
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 11.10.2025 - 21:37