[Problème] Listes déroulantes liées dans module

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [Problème] Listes déroulantes liées dans module

    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
    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>
    ma fonction avec ma requête ajax
    Code:
    function getDepartements( arg, root )
    {
        var url = root + 'modules/mod_phenix_recherche/mod_phenix_recherche.php';
        $.post(url, {id_region: arg}, function(  ){
     
        });
    }
    mon controller
    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::getDepartementsJRequest::getVar('id_region') );
    }
    require( 
    JModuleHelper::getLayoutPath'mod_phenix_recherche' ) ); 
    Mon helper.php
    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;
        }

    Merci d'avance,
    Mell

  • #2
    Re : [Problème] Listes déroulantes liées dans module

    Bonjour,

    Est ce que dans ton code HTML tu as bien mit :

    <?php
    defined('_JEXEC') or die('Restricted access');
    echo JHTML::_( 'form.token' )
    ?>

    Commentaire


    • #3
      Re : [Problème] Listes déroulantes liées dans module

      Bonjour, merci de ta réponse.
      Alors non je n'avais pas seconde ligne.
      Je suppose qu'il n'y a pas que cette ligne à rajouter ?

      Commentaire


      • #4
        Re : [Problème] Listes déroulantes liées dans module

        Envoyé par Mell_ Voir le message
        Bonjour, merci de ta réponse.
        Alors non je n'avais pas seconde ligne.
        Je suppose qu'il n'y a pas que cette ligne à rajouter ?
        Après tout dépend de ton développement, je sais que moi je rajoute un champ pour l'id et un champ pour la view.
        Mais en tout cas, les 2 lignes que je t'ai passées sont obligatoires.

        Commentaire


        • #5
          Re : [Problème] Listes déroulantes liées dans module

          Ok merci, mais ça ne règle pas mon soucis de zone de liste liées :-/
          Avec le code actuel ça ne fonctionne pas, car je ne sais pas comment me débrouiller pour le renvois des données à l'ajax pour ensuite remplir la zone de liste en javascript.

          Commentaire


          • #6
            Re : [Problème] Listes déroulantes liées dans module

            Envoyé par Mell_ Voir le message
            Ok merci, mais ça ne règle pas mon soucis de zone de liste liées :-/
            Avec le code actuel ça ne fonctionne pas, car je ne sais pas comment me débrouiller pour le renvois des données à l'ajax pour ensuite remplir la zone de liste en javascript.
            Voici une requête ajax que j'ai réalisé, ça pourrait te donner des idées

            $urlSimulation = JURI::getInstance();
            $urlSimulation->setVar('layout', 'simulation');

            $.ajax({
            'url': '<?php echo $urlSimulation ?>',
            'type': 'post',
            'data': $('#MatchOrders').serialize(),
            'dataType': 'json',
            'success': function(json) {
            $.each(json, function(idx, secteur) {
            $('#'+secteur.Label).html(secteur.Skill);
            });
            }
            });


            Donc dans le processus ça va interroger la view de mon composant ou à l'intérieur j'ai un layout à simulation, ensuite je retourne les infos dedans en json grâce à la fonction php 'json_encode' et ensuite dans la boucle each je génère mon html.

            Pour les action en javascript regarde avec la doc jQuery qui est très puissante.

            Commentaire


            • #7
              Re : [Problème] Listes déroulantes liées dans module

              Puis-je voir le PHP qui se trouve derrière cette requête ajax ? Car c'est justement là que je coince.. à quel endroit dois-je faire ce retour avec json_encode ?

              Après pour ce qui est de jQuery, je connais bien c'est pas le javascript qui me pose problème, c'est le php qui suis la requête ajax.

              Commentaire


              • #8
                Re : [Problème] Listes déroulantes liées dans module

                voila ce que ça donne côté php

                switch ($this->getLayout()) {
                case 'simulation' :
                echo json_encode(YGoalModelMatch::calculNotes($complete dCompo));
                break;
                }

                Voilà tout simplement je retourne les infos de ma fonction calculNotes. Ces lignes se trouvent dans le fichier view.html.php

                Commentaire


                • #9
                  Re : [Problème] Listes déroulantes liées dans module

                  ça ne fonctionne pas. Je suis dans un module, et non un composant c'est peut être ça le problème. car déjà le $this n'existe pas dans la vue d'un module.

                  Commentaire


                  • #10
                    Re : [Problème] Listes déroulantes liées dans module

                    Envoyé par Mell_ Voir le message
                    ça ne fonctionne pas. Je suis dans un module, et non un composant c'est peut être ça le problème. car déjà le $this n'existe pas dans la vue d'un module.

                    oui pour le module il faut récupérer ta valeur comme ça

                    $app = JFactory::getApplication();
                    require_once JPATH_ADMINISTRATOR.'/components/com_ygoal/models/match.php';

                    if ( 'simulation' == $app->input->getString('layout')) {
                    echo json_encode(YGoalModelMatch::calculNotes($app->input->getString('ta_variable')));
                    }

                    Commentaire


                    • #11
                      Re : [Problème] Listes déroulantes liées dans module

                      Bon finalement, je me suis dirigée vers le PHP pur pour mes listes déroulantes liées, je m'en sortais pas avec l'ajax.
                      Mais merci quand même

                      Du coup je ne sais pas si je dois mettre résolu puisque je n'ai pas réussi à le faire en ajax au final ?

                      Commentaire

                      Annonce

                      Réduire
                      Aucune annonce pour le moment.

                      Partenaire de l'association

                      Réduire

                      Hébergeur Web PlanetHoster
                      Travaille ...
                      X