Bonjour,
J'essai de faire des listes déroulante liées avec ajax dans un module joomla 3.x
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 avec ma requête ajax
mon controller
Mon helper.php
Merci d'avance,
Mell
J'essai de faire des listes déroulante liées avec ajax dans un module joomla 3.x
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
Code HTML:
<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>
Code:
function getDepartements( arg, root ) { var url = root + 'modules/mod_phenix_recherche/mod_phenix_recherche.php'; $.post(url, {id_region: arg}, function( ){ }); }
Code PHP:
// 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' ) );
Code PHP:
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
Commentaire