In Zend Framework bestaat er een functie om forms in te vullen aan de hand van een array, die op deze manier gebruikt wordt:
Maar, ik wil het formulier invullen aan de hand van een model:
Nu heb ik zelf 2 manieren bedacht, maar ben met allebei niet echt tevreden:
Handmatig alles opgeven:
Een functie toArray/toFormData toevoegen aan het model, en deze dan aanroepen in de populate() functie:
Mijn vraag is nu, is er een betere oplossing?
PHP:
1
2
3
4
5
6
7
8
| $form = new Application_Form_Example(); $formData = array ( 'id' => 1, 'title' = 'Example' ); $form->populate($formData); |
Maar, ik wil het formulier invullen aan de hand van een model:
PHP:
1
2
3
4
5
6
7
8
| class Application_Model_Example { protected $_id; protected $_title; //Hier setters, getters etc } |
Nu heb ik zelf 2 manieren bedacht, maar ben met allebei niet echt tevreden:
Handmatig alles opgeven:
PHP:
1
2
3
4
5
6
7
8
9
| $form = new Application_Form_Example(); $model = new Application_Model_Example(); //wordt normaal uit database gevuld $formData = array ( 'id' => $model->getId(), 'title' => $model->getTitle() ); $form->populate($formData); |
Een functie toArray/toFormData toevoegen aan het model, en deze dan aanroepen in de populate() functie:
PHP:
1
2
3
4
5
6
7
8
9
10
| public function toFormData() { $formData = array(); foreach(get_object_vars($this) as $key => $value) { $formData[substr($key, 1)] = $value; } return $formData; } |
Mijn vraag is nu, is er een betere oplossing?