Bonjour à tous,
Voila j'essai de mettre en place l'édition d'un utilisateur dans l'administration.
J'arrive, via populate(), à pré-remplir les champs de type text et select, par contre le multicheckbox je n'y arrive pas.
Un utilisateur peut être délégué par plusieurs autres utilisateurs. Donc j'ai deux tables "concernées" par ma multicheckbox : user, delegate.
Structure de delegate :
Champs => me, delegate
Et ces deux champs sont en fait clé primaire mais aussi étrangères du champ user_id de la table user.
J'arrive à afficher la liste de tous les utilisateurs avec chacun sa checkbox mais ça ne coche pas lorsque ça le devrait. Ce qui est normal je pense au vu du code que je vais vous donner plus bas.
En fait je ne sais pas trop comment m'y prendre pour que zend fasse la relation automatiquement, comme avec mes select par exemple.
Voici ma méthode edit de mon usercontroller :
Voila j'espère avoir été assez clair et pas trop long
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 public function editAction(){ $id = $this->_getParam("id"); $user_table = new Default_Model_DbTable_TUser(); $ot_table = new Default_Model_DbTable_TOfferTemplate(); $rights_table = new Default_Model_DbTable_TRights(); $delegate_table = new Default_Model_DbTable_TDelegate(); $user_form = new Admin_Form_User(); // On récupère les infos de l'utilisateur pour alimenter les input text $user = $user_table->find($id)->current()->toArray(); // On récupère le template offer pour alimenter le select $offer_templates = $ot_table->fetchAll()->toArray(); $ot_data = array(); foreach($offer_templates as $offer_template){ $ot_data[$offer_template['offer_template_id']] = $offer_template['scope']; } $user_form->getElement('offer_template_id')->setMultiOptions($ot_data); // On récupère les droits pour alimenter tous les selects $rights = $rights_table->fetchAll()->toArray(); $rights_data = array(); foreach($rights as $right){ $rights_data[$right['right_level']] = $right['right_description']; } $user_form->getElement('task_offer')->setMultiOptions($rights_data); $user_form->getElement('task_items')->setMultiOptions($rights_data); $user_form->getElement('task_classes')->setMultiOptions($rights_data); $user_form->getElement('task_resources')->setMultiOptions($rights_data); $user_form->getElement('task_reports')->setMultiOptions($rights_data); $user_form->getElement('task_admin')->setMultiOptions($rights_data); // On récupère les delegations pour alimenter tous les selects $users = $user_table->fetchAll()->toArray(); $delegates_data = array(); foreach($users as $k){ $delegates_data[$k['resource_id']] = $k['user_name']; } $user_form->getElement('delegates')->setMultiOptions($delegates_data); // On récupère toutes les valeurs et on alimente le formulaire avec $resArray = array_merge_recursive($user, $ot_data, $rights_data, $delegates_data); $user_form->populate($resArray); $this->view->user_form = $user_form; }
Merci de votre aide
ci-joint une petite capture de la partie de mon form qui me pose problème
Partager