Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Walidacja formularza
sebekzosw
post
Post #1





Grupa: Zarejestrowani
Postów: 437
Pomógł: 42
Dołączył: 16.04.2007

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


Witam,

piszę z prośbą o pomoc.

mam taki fragment kodu:

  1. class FormValidator
  2. {
  3. private $data = array();
  4.  
  5. function addValidation($name, $value, $parms = false)
  6. {
  7. if($parms)
  8. $this->data['parms'][$name] = $value;
  9. else
  10. $this->data[$name] = $value;
  11.  
  12. return $this;
  13. }
  14.  
  15. function isNumeric()
  16. {
  17.  
  18. }
  19. }
  20.  
  21. $parm = new FormValidator;
  22. $parm->loadArray(array('parms' => array('test3' => 'test5')));
  23. $parm->addValidation('name', 'value')->isNumeric();
  24. $parm->addValidation('name2', 'value', true);
  25. $parm->addValidation('name3', 'value', true);


Działać ma to tak, że dodaje do tablicy dane, jednak od razu chciałbym to sprawdzać:

$parm->addValidation('name', 'value')->isNumeric();

jednak nie wiem jak przekazać wartość do funkcji isNumeric tak jak powyżej pokazałem. Wiem, że mogę zapytać Google, jednak nie wiem co wpisać. Jak dokonać sprawdzenia pola? smile.gif
Go to the top of the page
+Quote Post
Spawnm
post
Post #2





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




Hmm opisz czym ma się różnić 'parms' od reszty.
isNumeric() ma zwrócić bool, sypnąć wyjątkiem, ustawić jakiś $this->_error czy jak?

Na szybko to daj dodatkowy parametr protected $_lastName i tam zapisuj $name.
No i w tym przypadku jeszcze wymuszasz protected $_isParms.
Parametry ustawiasz na początku metody addValidation
Go to the top of the page
+Quote Post
sebekzosw
post
Post #3





Grupa: Zarejestrowani
Postów: 437
Pomógł: 42
Dołączył: 16.04.2007

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


  1. class FormValidator
  2. {
  3. private $data = array();
  4. private $_Temp;
  5.  
  6. function loadArray($array)
  7. {
  8. $this->data = array_merge($this->data, $array);
  9. }
  10.  
  11. function checkOption($name, $add = true, $parms = false)
  12. {
  13. $this->_Temp = '';
  14.  
  15. if(isset($_POST[$name]))
  16. {
  17. if($add)
  18. {
  19. if($parms)
  20. $this->data['parms'][$name] = $_POST[$name];
  21. else
  22. $this->data[$name] = $_POST[$name];
  23. }
  24.  
  25. $this->_Temp = $_POST[$name];
  26. }
  27.  
  28.  
  29. return $this;
  30. }
  31.  
  32. function isEmpty($info = '')
  33. {
  34. if(empty($this->_Temp))
  35. echo $info;
  36.  
  37. return $this;
  38. }
  39.  
  40. function checkLength($min, $max, $info = '')
  41. {
  42. if(mb_strlen($this->_Temp, 'UTF-8') > $max || mb_strlen($this->_Temp, 'UTF-8') < $min)
  43. echo $info;
  44.  
  45. return $this;
  46. }
  47.  
  48. public function __destruct()
  49. {
  50. echo '<pre>';
  51. print_r($this->data);
  52. }
  53. }
  54. $_POST['pole1'] = '';
  55. $_POST['pole2'] = 'wartosc2';
  56. $_POST['pole3'] = 'wartosc3';
  57.  
  58. $parm = new FormValidator;
  59. $parm->loadArray(array('parms' => array('test3' => 'test5')));
  60. $parm->checkOption('pole1')->isEmpty('Uzupełnij pole 1')->checkLength(6, 10, 'blad2');
  61. $parm->checkOption('pole2', false, true)->isEmpty('Uzupełnij pole 2');
  62. $parm->checkOption('pole3', true, true)->isEmpty('Uzupełnij pole 3');


Da się zrobić, że w momencie sprawdzania:

$parm->checkOption('pole1')->isEmpty('Uzupełnij pole 1')->checkLength(6, 10, 'blad2');

jak isEmpty zwróci false to funkcja checkLength się nie wywoła? w funkcji isEmpty dla testów dałem return false; ale to daje mi błąd:


Fatal error: Call to a member function checkLength() on a non-object in D:\xampp\htdocs\form.php on line 67


Dobra, już sobie poradziłem... smile.gif
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 Aktualny czas: 19.08.2025 - 19:45