[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' )
    ?>
    Folcomedia - Agence Web
    Développeur Joomla depuis 1724
    http://www.folcomedia.fr
    Sites internet | E-commerce | Hébergement | Application mobiles & Facebook
    Présent au JoomlaDay 2014

    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.
        Folcomedia - Agence Web
        Développeur Joomla depuis 1724
        http://www.folcomedia.fr
        Sites internet | E-commerce | Hébergement | Application mobiles & Facebook
        Présent au JoomlaDay 2014

        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.
            Folcomedia - Agence Web
            Développeur Joomla depuis 1724
            http://www.folcomedia.fr
            Sites internet | E-commerce | Hébergement | Application mobiles & Facebook
            Présent au JoomlaDay 2014

            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
                Folcomedia - Agence Web
                Développeur Joomla depuis 1724
                http://www.folcomedia.fr
                Sites internet | E-commerce | Hébergement | Application mobiles & Facebook
                Présent au JoomlaDay 2014

                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')));
                    }
                    Folcomedia - Agence Web
                    Développeur Joomla depuis 1724
                    http://www.folcomedia.fr
                    Sites internet | E-commerce | Hébergement | Application mobiles & Facebook
                    Présent au JoomlaDay 2014

                    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
                      1 sur 2 < >

                      C'est [Réglé] et on n'en parle plus ?

                      A quoi ça sert ?
                      La mention [Réglé] permet aux visiteurs d'identifier rapidement les messages qui ont trouvé une solution.

                      Merci donc d'utiliser cette fonctionnalité afin de faciliter la navigation et la recherche d'informations de tous sur le forum.

                      Si vous deviez oublier de porter cette mention, nous nous permettrons de le faire à votre place... mais seulement une fois
                      Comment ajouter la mention [Réglé] à votre discussion ?
                      1 - Aller sur votre discussion et éditer votre premier message :


                      2 - Cliquer sur la liste déroulante Préfixe.

                      3 - Choisir le préfixe [Réglé].


                      4 - Et voilà… votre discussion est désormais identifiée comme réglée.

                      2 sur 2 < >

                      Assistance au forum - Outil de publication d'infos de votre site

                      Compatibilité: PHP 4.1,PHP4, 5, 6DEV MySQL 3.2 - 5.5 MySQLi from 4.1 ( @ >=PHP 4.4.9)

                      Support Version de Joomla! : | J!3.0 | J!2.5.xx | J!1.7.xx | J!1.6.xx | J1.5.xx | J!1.0.xx |

                      Version française (FR) D'autres versions sont disponibles depuis la version originale de FPA

                      UTILISER À VOS PROPRES RISQUES :
                      L'exactitude et l'exhaustivité de ce script ainsi que la documentation ne sont pas garanties et aucune responsabilité ne sera acceptée pour tout dommage, questions ou confusion provoquée par l'utilisation de ce script.

                      Problèmes connus :
                      FPA n'est actuellement pas compatible avec des sites Joomla qui ont eu leur fichier configuration.php déplacé en dehors du répertoire public_html.

                      Installation :

                      1. Téléchargez l'archive souhaitée : http://afuj.github.io/FPA/

                      Archive zip : https://github.com/AFUJ/FPA/zipball/master

                      2. Décompressez le fichier de package téléchargé sur votre propre ordinateur (à l'aide de WinZip ou d'un outil de décompression natif).

                      3. Lisez le fichier LISEZMOI inclus pour toutes les notes de versions spécifiques.

                      4. LIRE le fichier de documentation inclus pour obtenir des instructions d'utilisation détaillées.

                      5. Téléchargez le script fpa-fr.php à la racine de votre site Joomla!. C'est l'endroit que vous avez installé Joomla et ce n'est pas la racine principale de votre serveur. Voir les exemples ci-dessous.

                      6. Exécutez le script via votre navigateur en tapant: http:// www. votresite .com/ fpa-fr.php
                      et remplacer www. votresite .com par votre nom de domaine


                      Exemples:
                      Joomla! est installé dans votre répertoire web et vous avez installé la version française du fichier FPA:
                      Télécharger le script fpa-fr.php dans: /public_html/
                      Pour executer le script: http://www..com/fpa-fr.php

                      Joomla! est installé dans un sous-répertoire nommé "cms" et vous avez installé la version française du fichier FPA:
                      Télécharger le script fpa-fr.php dans: /public_html/cms/
                      Pour executer le script: http://www..com/cms/fpa-fr.php

                      En raison de la nature très sensible de l'information affichée par le script FPA, il doit être retiré immédiatement du serveur après son utilisation.

                      Pour supprimer le script de votre site, utilisez le lien de script de suppression fourni en haut de la page du script. Si le lien de suppression échoue pour supprimer le script, utilisez votre programme FTP pour le supprimer manuellement ou changer le nom une fois que le script a généré les données du site et le message publié sur le forum. Si le script est toujours présent sur le site, il peut être utilisé pour recueillir suffisamment d'informations pour pirater votre site. Le retrait du script empêche des étrangers de l'utiliser pour jeter un oeil à la façon dont votre site est structuré et de détecter les défauts qui peuvent être utilisé à vos dépends.
                      Voir plus
                      Voir moins
                      Travaille ...
                      X