Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
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.
<?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,)); } }
<?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; } }
<!--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
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
Merci pour ta réponse, ça m'aide à mieux comprendre mon erreur.
Voici la classe :
<?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
je suppose que la méthode getClasseActivites() marche et retourne bien des données?
dans Application_Form_Grille2Cours:
[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:
[lang=php] public function indexAction() { // action body $this->view->form = new Application_Form_Grille2Cours(); }
Hors ligne
Pages: 1