IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend_Form PHP Discussion :

Problème récupération données multicheckbox avec relation HABTM [ZF 1.11]


Sujet :

Zend_Form PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2010
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 43
    Points : 27
    Points
    27
    Par défaut Problème récupération données multicheckbox avec relation HABTM
    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 :
    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;
        }
    Voila j'espère avoir été assez clair et pas trop long
    Merci de votre aide

    ci-joint une petite capture de la partie de mon form qui me pose problème
    Images attachées Images attachées  

  2. #2
    Nouveau membre du Club
    Inscrit en
    Janvier 2010
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 43
    Points : 27
    Points
    27
    Par défaut
    Bon et bien j'ai trouvé une solution de faire mais je doute fortement que ce soit la plus adaptée. Voici ce que j'ai fait :

    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
     
    // On récupère les delegations pour alimenter toutes les checkbox
    	$users = $user_table->fetchAll()->toArray();
    	$delegates = $delegate_table->fetchAll('me=' . $id)->toArray();
     
    	$users_data = array();
    	$delegate = array();
    	foreach($users as $k){
    	    $users_data[$k['resource_id']] = $k['user_name'];
    	}
    	foreach($delegates as $w => $x){
    	    $delegate[] = $x['delegate'];
    	}
    	$user_form->getElement('delegates')->setMultiOptions($users_data);
    	$user_form->getElement('delegates')->setValue($delegate);
    Voili voilou ! Bon si quelqu'un me propose une solution plus "magique" on va dire, et bien je suis bien évidemment preneur. En attendant, je peux avancer dans mon projet.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/04/2009, 10h37
  2. Réponses: 2
    Dernier message: 11/12/2008, 03h34
  3. Problème récupération données d'un tableau
    Par DragonicFlash dans le forum Langage
    Réponses: 2
    Dernier message: 03/12/2008, 11h43
  4. Problème récupération données struts/hibernate
    Par Syham dans le forum Struts 1
    Réponses: 9
    Dernier message: 12/03/2008, 10h48
  5. [MySQL] Problème récupération données avec apostrophe
    Par Nata31 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 21/07/2006, 16h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo