Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [zendFramework] zend_form i Opcje dwuwartościowe
Forum PHP.pl > Forum > PHP > Frameworki
piraciq
Witam serdecznie.

Przy tworzeniu formularzy korzystam z zend_form i teraz chciał bym edytować rekord w którym mam zapisane opcje przy pomocy właśnie tych opcji.

Do przekazania danych do formularza używam
  1. $form->populate($model->toArray());
i jak wiadomo jeśli ma się nazwy pól takie same jak nazwy pól w bazie to je wypełni, ale w jaki sposób przekazać lub odczytać pole z bazy jeśli są tam zapisane dane w tej formie?

pozdrawiam



zend
Spróbuj to trochę lepiej wyjaśnić. Z tego co zrozumiałem dobrze by było jeśli nadpisał byś metody Zend_Form::populate() oraz Zend_Form::getValues() i tam mapował nazwy pól w bazie na nazwy pól w formularzu
piraciq
Witam

więc tak

z polami tekstowymi nie ma problemu ale w bazie mam pole opcje które jest sumą wartości zaznaczonych checkbox`ów. czyli przy wypełnianiu formularza zaznaczam dwa 'boxy' o wartościach 1 i 2 co daje mi wartość 3 którą zapisuje w bazie. I teraz chcę edytować ten rekord a pola checkboxa to jest tablica w formularzu a w bazie mam sumę i teraz chodzi mi o to aby przekazać wartość z bazy do skryptu formularza abym mógł wyciągnąć które pola są zaznaczone.

zend
  1.  
  2. class Default_Form_Settings_Messages extends Zend_Form
  3. {
  4. public function init()
  5. {
  6.  
  7. $this -> addElement('multiCheckbox' , 'events' , array(
  8. 'multiOptions' => array(
  9. 'friednChangedAvatar' => 'Gdy ktoś z mojej listy znajomych zmienił awatar',
  10. 'friendAddThought' => 'Gdy ktoś z mojej listy znajomych dokonał wpisu "Co myśli"'
  11. ))
  12. ));
  13.  
  14. $this -> addElement('submit' , 'submit' , array(
  15. 'label' => 'Zapisz',
  16. 'ignore' => true
  17. ));
  18.  
  19. return parent::init();
  20. }
  21.  
  22. public function getValues()
  23. {
  24. $values = parent::getValues();
  25. $defaults = array();
  26. $options = array_merge(
  27. array_keys($this -> events -> getMultiOptions())
  28. );
  29.  
  30. foreach($options as $index)
  31. {
  32. $defaults[$index] = (int)(in_array($index , $values['events']));
  33. }
  34. return array_merge($values , $defaults);
  35. }
  36.  
  37. public function populate($values)
  38. {
  39. $eventkeys = array_keys($this -> events -> getMultiOptions());
  40. $events = array();
  41. foreach($values as $index => $value)
  42. {
  43. if(in_array($index, $eventkeys) && $value)
  44. {
  45. $events[] = $index;
  46. }
  47. }
  48.  
  49. $values['events'] = $events;
  50. return parent::populate($values);
  51. }
  52. }

Formularz z projktu, ale powinieneś być w stanie przystosować go sobie do własnych potrzeb
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.