Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Cake]Dane z formularza z widoku
Forum PHP.pl > Forum > PHP > Frameworki
andre13
Chcę stworzyć w modelu funkcję sprawdzającą poprawność numer pesel. Potrzebuje do tego dwóch danych z formularza- pesel i płeć. Jak odczytać te dane w modelu?

Mój formularz w Widoku wygląda następująco:
  1. echo $this->Form->input('Patient.firstname');
  2. echo $this->Form->input('Patient.lastname');
  3. echo $this->Form->input('Patient.pesel');
  4.  
  5. echo $this->Form->input('Patient.birth_date',array(
  6. 'label'=>'Data urodzenia',
  7. 'dateFormat'=>'DMY',
  8. 'minYear'=> date('Y')-100,
  9. 'maxYear'=> date('Y'),
  10. ));
  11. echo $this->Form->input('Patient.sex', array(
  12. 'options' => array('Male'=>'Mężczyzna', 'Female'=>'Kobieta'),
  13. ));

A walidacja w modelu tak:

  1. public $validate = array(
  2. 'pesel'=>array(
  3. 'pes' =>array(
  4. 'rule' => 'pess',
  5. 'message' => 'Błędny pesel')
  6. ));
  7.  
  8. public function pess($data){
  9. $w=array(1,3,7,9,1,3,7,9,1,3);
  10. $pes=str_split($data['pesel']);
  11. $wk=0;
  12. if(sizeof($pes)==11){
  13. for ($i=0;$i<=9;$i++){
  14. $wk=($wk+$pes[$i]*$w[$i]);}
  15. $k = 10- $wk % 10;
  16. $sum = ($k==10)?0:$k;
  17. if ($pes[10]==$sum) return true;
  18. else {
  19. return false;}
  20. }else return false;
  21. }
  22.  
  23. public $validate = array(
  24. 'pesel'=>array(
  25. 'pes' =>array(
  26. 'rule' => 'pess',
  27. 'message' => 'Błędny pesel'),
  28. ),


I wszystko działa poprawnie tylko chce jeszcze sprawdzić czy podana płeć zgadza się z PESELEM i potrzebuje do tego pobrać dane wysłane z Formularza z pola
  1. $this->Form->input('Patient.sex');
Riggs
Rozumiem że chcesz to sprawdzić w metodzie pess?
Wtedy możesz się odwołać do $this->data['sex'] (najlepiej zrób sobie var_dump w $this->data w metodzie pess i zobaczysz jakie dane są ustawione).
Pyton_000
Jeżeli PESEL jest obowiązkowy to nie ma sensu podawania płci, chyba że jest nieobowiązkowy.
W metodzie pess przekazujesz $data, więc i w nim powinny być pozostałe dane
andre13
Wielkie dzieki za pomoc. Wystarczyło wpisać $this->data['Patient']['sex'];
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.