Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour, une fois de plus je m'excuse de revenir une fois de plus sur ce sujet déjà rencontré dans presque plusieurs forums mais vraiment sans reponse satisfaisant.En effet je dispose d'un formulaire devant permettre de creer des circonscriptions en fonction du pays de la region du departement et de l'arrondissement (PAYS->REGION->DEPARTEMENT->ARRONDISSEMENT->nom_circonscription) pour cela j'ai envie d'utiliser ajax et d'apres http://www.developpez.net/forums/d95031 … ste-liees/ j'ai pu réaliser mon models mais je ne sais pas pourquoi cela ne fonctionne pas
voici mon code model pays
<?php class Application_Model_DbTable_Pays extends Zend_Db_Table_Abstract { protected $_name = 'pays'; public function selectData() { $select = $this->select(); return $this->fetchAll($select); }//Eof:: selectData }
voici mon code model region
<?php class Application_Model_DbTable_Region extends Zend_Db_Table_Abstract { protected $_name = 'region'; public function selectData() { $select = $this->select(); return $this->fetchAll($select); }//Eof:: selectData }
voici mon code model departement
<?php class Application_Model_DbTable_Departement extends Zend_Db_Table_Abstract { protected $_name = 'departement'; public function selectData() { $select = $this->select(); return $this->fetchAll($select); }//Eof:: selectData }
voici mon code model arrondissement
<?php class Application_Model_DbTable_Arrondissement extends Zend_Db_Table_Abstract { protected $_name = 'arrondissement'; public function selectData() { $select = $this->select(); return $this->fetchAll($select); }//Eof:: selectData public function selectRecherche($critere) { $sql = "SELECT `pays`.`idpays`, `pays`.`nom_pays`,`region`.`idregion`, `region`.`nom_region`, `departement`.`iddepartement`,`departement`.`nom_departement`,`arrondissement`.`idarrondissement`, `arrondissement`.`nom_arrondissement` FROM `pays` INNER JOIN `region` ON `pays`.`idpays` = `region`.`pays_idpays` INNER JOIN `departement` ON `region`.`idregion` = `departement`.`region_idregion` INNER JOIN `arrondissement` ON `departement`.`iddepartement` = `arrondissement`.`departement_iddepartement` "; // Continent if (!$critere['idpays'] == "") { $sql .= " AND `pays`.`idpays` = ".$critere['idpays']; } // Pays if (!$critere['idregion'] == "") { $sql .= " AND `region`.`idregion` = ".$critere['idregion']; } // Ville if (!$critere['iddepartement'] == "") { $sql .= " AND `departement`.`iddepartement` = ".$critere['iddepartement']; } if (!$critere['idarrondissement'] == "") { $sql .= " AND `arrondissement`.`idarrondissement` = ".$critere['idarrondissement']; } return $this->getAdapter('db')->fetchAll($sql); }//Eof:: selectRecherche }
voici mon formulaire
<?php class Application_Form_Circonscription extends Zend_Form { public function __construct($options = null) { parent::__construct($options); /* Le Formulaire */ $this->addAttribs( array( 'id' => 'circonscription')); /* Bouton Reset */ $reset = new Zend_Form_Element_Button('reset'); $reset ->setLabel('reset'); // Liste des pays $id_pays = new Zend_Form_Element_Select('idpays'); $id_pays->setLabel ('Pays') ->addMultiOptions($this->listPays()) ; // Liste des regions $id_region = new Zend_Form_Element_Select('idregion'); $id_region->setLabel ('Region') ->addMultiOptions($this->listRegion()) ; // Liste des departements $id_departement = new Zend_Form_Element_Select('iddepartement'); $id_departement->setLabel ('Departement') ->addMultiOptions($this->listDepartement()) ; // Liste des arrondissements $id_arrondissement = new Zend_Form_Element_Select('idarrondissement'); $id_arrondissement->setLabel ('Arrondissement') ->addMultiOptions($this->listArrondissement()) ; /* Element bouton de validation */ $submit = new Zend_Form_Element_Submit('submit'); $submit ->setAttrib('id', 'submitbutton') ->setLabel('Chercher') ; $nom = new Zend_Form_Element_Text('circonscription'); $nom ->setLabel('circonscription') ->setRequired(true) ->addFilter('StripTags') ->addFilter('StringTrim') ->addValidator('NotEmpty'); $this->addElements(array( $reset , $id_pays , $id_region , $id_departement , $id_arrondissement , $nom , $submit )); } //Eof:: __construct /** * Liste des pays */ private function listPays() { $TContinents = new Application_Model_DbTable_Pays(); $Continents = $TContinents->selectData(); $listPays = array(); $listPays[""] = "-- Choisissez --"; foreach ($Continents as $Continent) { $listPays[$Continent->idpays] = $Continent->nom_pays; } return $listPays; }//Eof:: listContinent /** * Liste des regions */ private function listRegion() { $TPays = new Application_Model_DbTable_Region(); $region = $TPays->selectData(); $listRegion = array(); $listRegion[""] = "-- Choisissez --"; foreach ($region as $pays) { $listRegion[$pays->idregion] = $pays->nom_region; } return $listRegion; }//Eof:: listPays /** * Liste des departement */ private function listDepartement() { $TVilles = new Application_Model_DbTable_Departement(); $departement = $TVilles->selectData(); $listDepartement = array(); $listDepartement[""] = "-- Choisissez --"; foreach ($departement as $Ville) { $listDepartement[$Ville->iddepartement] = $Ville->nom_departement; } return $listDepartement; }//Eof:: listVille /** * Liste des arrondissements */ private function listArrondissement() { $TVilles = new Application_Model_DbTable_Arrondissement(); $arrondissement = $TVilles->selectData(); $listArrondissement= array(); $listArrondissement[""] = "-- Choisissez --"; foreach ($arrondissement as $Ville) { $listArrondissement[$Ville->idarrondissement] = $Ville->nom_arrondissement; } return $listArrondissement; }//Eof:: listVille }
voici mon controlleur ajax
<?php class Admin_AjaxController extends Zend_Controller_Action { public function init() { /* Initialize action controller here */ $this->view->addHelperPath('ZendX/JQuery/View/Helper/', 'ZendX_JQuery_View_Helper'); if($this->_request->isXmlHttpRequest()){ $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(true); $this->_helper->viewRenderer->setNeverRender(true); } } public function indexAction() { // action body } public function remplirAction() { // action body // Récupération des paramètres passés dans la requête $params = $this->_request->getParams(); // Appel de mon modèle de table $TVilles = new Application_Model_DbTable_Arrondissement(); // Extraction selon les critère de recherche des différents paramètres $Rows = $TVilles->selectRecherche($params); // Transforme mes données en tableau PHP $list = array(); foreach ($Rows as $row) { $list ['pays'][$row->idpays] = $row->nom_pays; $list ['region'][$row->idregion] = $row->nom_region; $list ['departement'][$row->iddepartement] = $row->nom_departement; $list ['arrondissement'][$row->idarrondissement] = $row->nom_arrondissement; } // Je renvoie ce tableau à ma vue au format JSON $this->_helper->json($list , array( 'enableJsonExprFinder' => true )); }//Eof:: remplirAction }
voici mon controlleur circonscription
<?php class Admin_CirconscriptionController extends Zend_Controller_Action { public function init() { /* Initialize action controller here */ $this->view->addHelperPath('ZendX/JQuery/View/Helper/', 'ZendX_JQuery_View_Helper'); } public function indexAction() { } public function ajouterAction() { $Form = new Application_Form_Circonscription(); // Assignation de mes éléments à ma vue $this->view->form = $Form; } }
voici mon fichier javascript situé dans /public/js/custom.custom.js
/** */ //Remplir les select du formulaire en fonction de la réponse AJAX function remplirSelect (dataAjax) { // Envoi requête AJAX $.ajax({ type: "POST" , url: "../ajax/remplir" // controller : ajax , action : remplir , data : dataAjax , dataType: "json" , success: function(reponse){ // Sur Succès de la réponse AJAX // Duplique ma réponse var optionData = reponse; // Suppression des éléments de mes listes déroulantes $("#idpays > option").remove(); $("#idregion > option").remove(); $("#iddepartement> option").remove(); $("#idarrondissement> option").remove(); // Ajoute les options pour chaque liste déroulante en fonction de la réponse // Mes Continents i = 0; for (key in reponse.Pays) { $("#idpays").append( '<option label="' + optionData['Pays'][key] + '"' + 'value="' + key + '">' + optionData['Pays'][key] + '</option>'); i++; if (i == 2) { $("#idpays:first").prepend( '<option label="Choisissez" value="" >-- Choississez --</option>'); $("#idpays option:first").attr ('selected', 'selected'); } } //Eof:: for 'pays' // Mes Pays i = 0; for (key in reponse.Region) { $("#idregion").append( '<option label="' + optionData['Region'][key] + '"' + 'value="' + key + '">' + optionData['Region'][key] + '</option>'); i++; if (i == 2) { $("#idregion:first").prepend( '<option label="Choisissez" value="" >-- Choississez --</option>'); $("#idregion option:first").attr ('selected', 'selected'); } } //Eof:: for 'region' // Mes departements i = 0; for (key in reponse.Departement) { $("#iddepartement").append( '<option label="' + optionData['Departement'][key] + '"' + 'value="' + key + '">' + optionData['Departement'][key] + '</option>'); i++; if (i == 2) { $("#iddepartement:first").prepend( '<option abel="Choisissez" value="" >-- Choississez --</option>'); $("#iddepartement option:first").attr ('selected', 'selected'); } } //Eof:: for 'Departement' // Mes departements i = 0; for (key in reponse.Arrondissement) { $("#idarrondissement").append( '<option label="' + optionData['Arrondissement'][key] + '"' + 'value="' + key + '">' + optionData['Arrondissement'][key] + '</option>'); i++; if (i == 2) { $("#idarrondissement:first").prepend( '<option abel="Choisissez" value="" >-- Choississez --</option>'); $("#idarrondissement option:first").attr ('selected', 'selected'); } } //Eof:: for 'Arrondissement' } //Eof:: success }); //Eof:: ajax } //Eof:: fucntion remplirSelect //Sur fin du chargement du document $(document).ready( function() { // Sur changement de l'un des 'select' $("select").change(function(){ // Je recupère la valeur des sélections en cours Vid_pays = $("select#idpays").val(); Vid_region = $("select#idregion").val(); Vid_departement = $("select#iddepartement").val(); Vid_arrondissement = $("select#idarrondissement").val(); // Données à passer à la requête AJAX var dataAjax = { idpays:[Vid_pays] , idregion:[Vid_region] , iddepartement:[Vid_departement] , idarrondissement:[Vid_arrondissement] }; // Modification des 'select' remplirSelect (dataAjax); }); //Eof:: sur changement de l'un des 'select' // Sur click bouton reset $("#reset").click (function() { alert("bonjour bao"); // Aucun choix Vid_pays = ""; Vid_region = ""; Vid_departement = ""; Vid_arrondissement = ""; // Données à passer à la requête AJAX var dataAjax = { idpays:[Vid_pays] , idregion:[Vid_region] , iddepartement:[Vid_departement] , idarrondissement:[Vid_arrondissement] }; // Modification des 'select' remplirSelect (dataAjax); }); //Eof:: sur click btn 'reset' }); //Eof:: ready
voici mon layout comprend la ligne suivante
<?php $this->headScript()->appendFile('/js/custom/custom.js'); ?>
mais malgres tout ceci rien ne marche s'il vous plais aidez moi à voir ce qui ne vas pas dans mes codes
Dernière modification par stevouwill (18-08-2012 20:21:42)
Hors ligne
s'il vous plais j'aimerais savoir en fait comment faire pour activer javascript pour ma vue parce que je me rend compte que le javascript ne fonctionne pas
Hors ligne
Bonjour,
As-tu dans ton layout cette ligne :
[lang=php]echo $this->headScript() . PHP_EOL;
Dernière modification par Ykorio (22-09-2012 14:20:59)
Hors ligne
Pages: 1