Bonjour,
J'essai tant bien que mal de créer un module joomla 3.x.
Jusque là tout va bien mon module est bien installé tout ça. Le problème c'est que j'essai de faire des listes déroulante liées avec ajax.
Mais vu que dans un module joomla, le controller ce n'est pas une classe, je galère.
Tout simplement, je n'arrive pas à remplir ma seconde zone de liste en ajax.. je ne peux pas faire un return directement à partir du controller, "Restriction access". Donc je sais pas trop comment faire :-/
Le faire en php pur me dérange un peu alors je viens voir si vous auriez une idée.
Voici mon HTML avec mes deux select
Ma fonction javascript avec mon ajax.
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 <div class="select-bien"> <div class="region"> <label>Région : </label> <div class="style-select"> <select name="region" onchange="javascript:getDepartements( this.value, '<?php echo JUri::root(); ?>' );"> <option value="-1"></option> <?php foreach( $regions as $r ): ?> <option value="<?php echo $r->num_region; ?>"><?php echo $r->nom; ?></option> <?php endforeach; ?> </select> </div> </div> </div> <div class="select-bien"> <div class="region"> <label>Département : </label> <div class="style-select"> <select name="departement"> <option value="-1"></option> <?php if ( isset( $departements ) ): foreach ( $departements as $d ): ?> <option value=""<?php echo $d->departement_id; ?>><?php echo $d->departement_nom; ?></option> <?php endforeach; endif; ?> </select> </div> </div> </div>
le controller de mon module
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 function getDepartements( arg, root ) { var url = root + 'modules/mod_phenix_recherche/mod_phenix_recherche.php'; $.post(url, {id_region: arg}, function( ){ }); }
Mon helper
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 // no direct access //defined( '_JEXEC' ) or die( 'Restricted access' ); jimport('joomla.application.component.view'); $doc = JFactory::getDocument(); $doc->addScript('modules/mod_phenix_recherche/js/jquery-1.10.2.min.js', 'text/javascript'); $doc->addScript('modules/mod_phenix_recherche/js/jquery-ui.js', 'text/javascript'); $doc->addScript('modules/mod_phenix_recherche/js/scripts.js', 'text/javascript'); $doc->addStyleSheet('modules/mod_phenix_recherche/css/recherche.css'); // no direct access defined( '_JEXEC' ) or die( 'Restricted access' ); // Include the syndicate functions only once require_once( dirname(__FILE__).'/helper.php' ); $regions = modPhenixRechercheHelper::getRegions( ); if ( JRequest::getVar('id_region') != "" ) { $departements = modPhenixRechercheHelper::getDepartements( JRequest::getVar('id_region') ); } require( JModuleHelper::getLayoutPath( 'mod_phenix_recherche' ) ); ?>
Merci d'avance,
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 class modPhenixRechercheHelper { /** * Retrieves the hello message * * @param array $params An object containing the module parameters * @access public */ public static function getRegions( ) { //Obtain a database connection $db = JFactory::getDbo(); //Retrieve the shout $query = $db->getQuery(true) ->select($db->quoteName(array('num_region', 'nom'))) ->from('web_regions') ->order('nom', 'ASC'); //Prepare the query $db->setQuery($query); // Load the row. $result = $db->loadObjectList(); //Return the Hello return $result; } public static function getDepartements( $id_region ) { //Obtain a database connection $db = JFactory::getDbo(); //Retrieve the shout $query = $db->getQuery(true) ->select($db->quoteName(array('departement_id', 'departement_nom'))) ->from('web_departements') ->where('region_id = ' . $id_region); //Prepare the query $db->setQuery($query); // Load the row. $result = $db->loadObjectList(); //Return the Hello return $result; } }
Mell
Partager