Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 16-05-2013 16:03:39

pitite
Nouveau membre
Date d'inscription: 16-05-2013
Messages: 3

Problème remplissage label zendcheckbox à partir d'une base de données

Bonjour,

je voudrais récupérer le contenu d'un champs d'une table dans une base de données pour le mettre comme label des checkbox.
J'ai essayé ceci mais cela ne fonctionne pas, je pense que c'est un problème de passage entre le controller et le formulaire.

Code:

<?php
class Application_Form_Grille2Cours extends Zend_Form
{
    public function init()
    {
        /* Form Elements & Other Definitions Here ... */
        $this->setMethod('post');
 
        $activite = new Zend_Form_Element_MultiCheckbox('activity');
        $activite->setMultiOptions($getClasseActivite);
        $this->addElement($activite);
        $this->addElement('submit', 'nextPage', array('ignore' => true, 'label' => 'Page suivante',));
        $this->addElement('hash', 'csrf', array('ignore' => true,));
    }
}

Code:

<?php
 
class Grille2CoursController extends Zend_Controller_Action
{
 
    public function init()
    {
        /* Initialize action controller here */
    }
 
    public function indexAction()
    {
        // action body
        $this->view->form = new Application_Form_Grille2Cours();
        $classActivite = new Application_Model_DbTable_ClassActivite();
        $getClasseActivite = $classeActivite->Activite();
        $this->view->form = $getClasseActivite;
    }
}

Code:

<!--Vue de la grille 2 du cours-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Cours - Grille2</title>
</head>
<body>
 
  <!--Affiche le formulaire-->
  <?php echo $this->form; ?>
</html>

Est-ce que quelqu'un peut m'aider, svp ?

Hors ligne

 

#2 16-05-2013 17:56:56

amiss
Membre
Lieu: Cesson-Sévigné
Date d'inscription: 08-05-2011
Messages: 115

Re: Problème remplissage label zendcheckbox à partir d'une base de données

non il ne s'agit pas d'un problème de passage entre le controller et le formulaire le problème est ailleurs. En effet la méthode setMultiOptions($getClasseActivite) est censée recevoir un tableau de données et dans ton cas ce tableau doit contenir les données provenant de ta BD.

Les données que tu veux inclure dans les checckbox proviennent bien d'une class (en particulier ta class model) , montres nous cette classe et la méthode la méthode qui extrait les données de ta BD

Hors ligne

 

#3 16-05-2013 19:49:58

pitite
Nouveau membre
Date d'inscription: 16-05-2013
Messages: 3

Re: Problème remplissage label zendcheckbox à partir d'une base de données

Merci pour ta réponse, ça m'aide à mieux comprendre mon erreur.
Voici la classe :

Code:

<?php 
class Application_Model_DbTable_ClassActivite extends Zend_Db_Table_Abstract
{
    protected $_name ='CLASSEACTIVITE';
    
    public function getClasseActivites(){
        
        $select = $this->select();
        $select->from(array('c'=>'CLASSEACTIVITE'),array('c.LibelleClasseActivite','c.IdClasseActivite'));
        $select->where('c.CLASSEACTIVITE IS NULL');
        $select->setIntegrityCheck(false);
        $result = $this->getAdapter()->fetchAll($select);
        return $result;
    }

Hors ligne

 

#4 17-05-2013 14:16:45

amiss
Membre
Lieu: Cesson-Sévigné
Date d'inscription: 08-05-2011
Messages: 115

Re: Problème remplissage label zendcheckbox à partir d'une base de données

je suppose que la méthode getClasseActivites() marche et retourne bien des données?

dans Application_Form_Grille2Cours:

Code:

[lang=php]

public function init()
    {
        /* Form Elements & Other Definitions Here ... */
        $this->setMethod('post');

$data=array();
$activite = Application_Model_DbTable_ClassActivite();
foreach($activite->getClasseActivites() as $value ){
$data[$value->IdClasseActivite] = $value;
}

        $activite = new Zend_Form_Element_MultiCheckbox('activity');
        $activite->setMultiOptions($data);
        $this->addElement($activite);
        $this->addElement('submit', 'nextPage', array('ignore' => true, 'label' => 'Page suivante',));
        $this->addElement('hash', 'csrf', array('ignore' => true,));
    }

dans le controlleur:

Code:

[lang=php]
    public function indexAction()
    {
        // action body
        $this->view->form = new Application_Form_Grille2Cours();
     
    }

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages