création composant

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

  • [RÉGLÉ] création composant

    Bonjour

    Je suis entrain de créer un composant pour joomla mais j'ai un petit problème
    sur ma page default.php j'ai la variable (je sais pas si ça ce nomme comme ça) JFactory qui fonctionne trés bien.
    Dans cette même page j'envois un formulaire a un fichier js qui a pas besoin de JFactory et lui me renvois a une page php qui lui a besoin de JFactory mais je me trouve face a mon problème. J'ai un message d'erreur qui me dit
    Fatal error: Class 'JFactory' not found in C:\wamp\www\joomla\components\com_graph\views\grap h\tmpl\choix.php on line 3
    Donc ma question est comment je dois faire pour ne plus avoir ce problème
    Merci d'avance
    Dernière édition par gandalf91 à 13/09/2011, 11h05

  • #2
    Re : création composant

    Peux-tu poster le début de ton fichier choix.php et comment ton fichier .js fait appel à ce fichier ?

    J'ai l'impression que tu adresses immédiatement le fichier choix.php sans même passer par index.php càd sans même passer par Joomla ==> pas de Joomla ==> pas de framework Joomla ==> pas de JFactory.
    Christophe (cavo789)
    Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)
    Développeur de marknotes, logiciel de gestion de prises de notes avec interface web et de multiples convertisseur https://github.com/cavo789/marknotes
    Mes logiciels OpenSource : https://www.avonture.be

    Commentaire


    • #3
      Re : création composant

      Bonjour désoler pour le retard

      voila pour le moment mon fichier choix.php

      Code:
      <?php
      header('Content-type: text/html; charset=iso-8859-1');
      $user = &JFactory::getUser();
      echo $_SERVER['SCRIPT_NAME'].'<br/>';
      echo $_REQUEST['numChoix'].'<br/>';
      ?>
      Voila mon fichier js
      Code:
      function getXhr(){
          var xhr = null;
              if(window.XMLHttpRequest){ 
                 xhr = new XMLHttpRequest(); 
              }
              else if(window.ActiveXObject){ 
                 try {
                          xhr = new ActiveXObject("Msxml2.XMLHTTP");
                  } catch (e) {
                          xhr = new ActiveXObject("Microsoft.XMLHTTP");
                  }
              }
              else { 
                 alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
                 xhr = false; 
              } 
          return xhr;
      }
      
      function choix() {
          for(i=0;i<3;i++){
              if(document.forms.choixRad.choixAff[i].checked==true){
                  var valueRadio=document.choixRad.choixAff[i].value;
                  if(valueRadio==1){
                      document.getElementById('choix1').style.display="block";
                      document.getElementById('choix2').style.display="none";
                      document.getElementById('choix3').style.display="none";
                      document.getElementById('cmdChoisi').style.display="block";
                      checkCmd();
                  } else if(valueRadio==2) {
                      document.getElementById('choix1').style.display="none";
                      document.getElementById('choix2').style.display="block";
                      document.getElementById('choix3').style.display="none";
                      document.getElementById('cmdChoisi').style.display="none";
                  } else if(valueRadio==3) {
                      document.getElementById('choix1').style.display="none";
                      document.getElementById('choix2').style.display="none";
                      document.getElementById('choix3').style.display="block";
                      document.getElementById('cmdChoisi').style.display="none";
                  }
                  break;
              }
          }
      }
      
      function checkCmd() {
          var xhr = getXhr();
          xhr.onreadystatechange = function(){
              if(xhr.readyState == 4 && xhr.status == 200){
                  di = document.getElementById('cmdChoisi');
                  di.innerHTML = xhr.responseText;
              }
          }
      
          xhr.open("POST","../../"+<?php echo $_SERVER['DOCUMENT_ROOT']; ?>+"joomla/components/com_graph/views/graph/tmpl/choix.php",true);
          xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
          numChoix = document.getElementById('numChoix').value;
          xhr.send("numChoix="+numChoix);
      }
      ET oui tu a raison je passe pas par index pour appeler mon fichier faut dire que je ne sais pas comment je dois faire
      Merci pour votre raiponce

      Commentaire


      • #4
        Re : création composant

        Envoyé par gandalf91 Voir le message
        ET oui tu a raison je passe pas par index pour appeler mon fichier
        Faut pas chercher plus loin. Dans le modèle MVC, toutes requêtes doit passer par le controlleur et donc par le fichier index.php. (ok, il existe de très rares exceptions mais dans ces cas-là, on n'utilise pas le framework de Joomla).

        Lis ce post : http://forum.joomla.fr/showthread.ph...AJAX-Mootools&
        Christophe (cavo789)
        Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)
        Développeur de marknotes, logiciel de gestion de prises de notes avec interface web et de multiples convertisseur https://github.com/cavo789/marknotes
        Mes logiciels OpenSource : https://www.avonture.be

        Commentaire


        • #5
          Re : création composant

          Re J'ai bien lu tout les articles
          Mais je n'arrive pas a les mettre en œuvre pouvez vous me donner le début pour me débloquer
          Merci pour votre raiponces et pour la suite

          Commentaire


          • #6
            Re : création composant

            Je ne peux rien faire de plus que dire "Courage!". Je t'ai filé un tutoriel; tout y est expliqué mais c'est vrai qu'il faut s'accrocher au début afin de comprendre.
            Christophe (cavo789)
            Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)
            Développeur de marknotes, logiciel de gestion de prises de notes avec interface web et de multiples convertisseur https://github.com/cavo789/marknotes
            Mes logiciels OpenSource : https://www.avonture.be

            Commentaire


            • #7
              Re : création composant

              bon je refait une fois de plus ce que j'ai trouver,
              j'ai rajouter a mon code du fichier default.php ce si (ce qui est en gras)
              Code:
              <?php
              // No direct access to this file
              defined('_JEXEC') or die('Restricted access');
              ?>
              <?php
              /* test */
              ?>
              <?php
                  JHTML::_('behavior.mootools'); /* to load mootools */
                  $ajax = "
                  /* <![CDATA[ */
                 window.addEvent('domready', function() {
                      $('start_ajax').addEvent('click', function(e) {
                          e.stop();    
                          var url = 'index.php?option=com_graph&view=graph&task=updateAjax&format=raw';
                          var x = new Request({
                              url: url, 
                              method: 'post', 
                      onSuccess: function(responseText){
                          document.getElementById('ajax_container').innerHTML = responseText;
                      }
                          }).send();      //  To pass values :    }).send('country_id=' + document.getElementById('country_id').value );
                      });
                  })
                  /* ]]> */
                  " ;
                   $doc = & JFactory::getDocument();
                  $doc->addScriptDeclaration( $ajax );
              ?>
              
              <div><a id="start_ajax" href="#">Click here</a> to start Ajax request</div>
              <div id="ajax_container">
                  Here is the ajax output
              </div>
              
              <?php
              /* test */
              ?>
              <script type="text/javascript" src="components/com_graph/views/graph/tmpl/fonction.js"></script>
              <script type="text/javascript" src="components/com_graph/views/graph/tmpl/jquery-1.6.2.min.js"></script>
              <h3>
              Gestion des commandes
              </h3>
              <form name="choixRad" method="POST" action="">
                  <label><input type="radio" hidden name="choixAff" value="1" onChange="choix()" /> Dix dernières commandes  </label>
                  <label><input type="radio" hidden name="choixAff" value="2" onChange="choix()" /> 30 dernier jours  </label>
                  <label><input type="radio" hidden name="choixAff" value="3" onChange="choix()" /> Période  </label>
              </form>
              <?php
              $user = &JFactory::getuser();
              $db = &JFactory::getDBO();
              $query = "SELECT * FROM #__users WHERE id=".$user->id;
              $db->setQuery($query);
              $row = $db->loadObjectList();
              $dossier = array();
              
              foreach ($row as $r) {
                  $dossier[] = $r->dossier ;
              }
              
              $requet = "SELECT * FROM #__commande WHERE id_user=".$user->id;
              $db->setQuery($requet);
              $resultat = $db->loadObjectList();
              $listCmd = array();
              $a = "SELECT count(id_user) FROM #__commande WHERE id_user=".$user->id;
              $db->setQuery($a);
              $b = $db->loadResult();
              ?>
              <div id="choix1" style="display: none">
              <h4>Liste de vos 10 dérnières commandes : </h4><br/>
              <form name="select" action="index.php?option=com_graph&views=graph&format=raw" method="GET">
                  <select name="numChoix" id="numChoix" onChange="checkCmd()">
                      <option value="">Choisir votre commande</option>"
                      <?php
                          $i = 0;
                          foreach ($resultat as $re) {
                              $listCmd[] = $re->id_commande;
                              echo '<option value="'.$listCmd[$i].'">Commande n° '.$listCmd[$i].'</option>';
                              $i++;
                          }
                      ?>
                  </select>
              </form>
              <div id="cmdChoisi" style="display: none">
                  <?php 
                          include_once ('components/com_graph/views/graph/tmpl/choix.php');
                  ?>
              </div>
              </div>
              <div id="choix2" style="display: none">
                  <?php 
                      echo 'Select des 30 derniers jours';
                  ?>
              </div>
              <div id="choix3" style="display: none">
                  <?php 
                      echo 'Select d\'une période';
                  ?>
                  <input type="text" value="31/08/2011"/>  <input type="text" value="01/01/1900"/><br/>
              </div>
              Et a mon fichiet controller.php j'ai mi aussi ce si (ce qui est en gras)
              Code:
              <?php
              // No direct access to the file
              defined('_JEXEC') or die('Restricted access');
              
              // import Joomla controller library
              jimport('joomla.application.component.controller');
              
              /**
               * Graph Component Controller
               */
              class GraphController extends JController {
                  function updateAjax() {
                  //      $country_id=JRequest::getVar('country_id');
                      echo date('Y-m-d D H:i:s');
                  }
              
                  public function display($cachable = false, $urlparams = false) {
                      // Get document objet.
                      $document = JFactory::getDocument();
                      
                      // set the default view name and format from the resquest.
                      $vName      = JRequest::getCmd('view', 'graph');
                      $vFormat    = $document->getType();
                      $lName      = JRequest::getCmd('layout', 'default');
                      
                      if ($view = $this->getView($vName, $vFormat)) {
                          // Do any specific processing by view.
                          switch ($vName) {
                              case 'fichier':
                                 $model = $this->getModel('Fichier');
                                  break ;
                              case 'utilisateur':
                                  $model = $this->getModel('Utilisateur');
                                  break ;
                              case 'modif':
                                  $model = $this->getModel('Modif');
                                  break ;
                              default :
                                  $model = $this->getModel('Graph');
                                  break ;
                          }
                          $view->setModel($model, true);
                          $view->setLayout($lName);
                          
                          $view->assignRef('document', $document);
                          $view->display();
                      }
                  }
              }
              mais rien ne change toujours le problème je sèche comme un débutant

              Commentaire


              • #8
                Re : création composant

                Salut

                Déjà, pourquoi mettre ton code JS de la sorte dans le php ? Beurk !!!

                Opte pour un fichier .js externe que tu charges. Plus propre, plus simple et plus aisé à géré.

                Pour ta tâche du contrôlleur, as-tu vu mon post : http://forum.joomla.fr/showthread.ph...l=1#post749032. Perso, je fais un mainframe->close();
                Christophe (cavo789)
                Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)
                Développeur de marknotes, logiciel de gestion de prises de notes avec interface web et de multiples convertisseur https://github.com/cavo789/marknotes
                Mes logiciels OpenSource : https://www.avonture.be

                Commentaire


                • #9
                  Re : création composant

                  Bonjour

                  Mon js est est dans le fichier le temps de tester si ça fonctionnel bien après je le mettrai dans un fichier au propres car la oui ces beurk

                  J'ai bien vu ton post mais je comprend pas comment modifier mon conroleur pour que ma page php s'affiche mieu et que j'ai pas une erreur 500 dans firebug qui me dis que ma page n'existe pas

                  Merci pour votre raiponce

                  Commentaire


                  • #10
                    Re : création composant

                    Je te donne le code de mon contrôleur
                    Code:
                    <?php
                    // No direct access to the file
                    defined('_JEXEC') or die('Restricted access');
                    
                    // import Joomla controller library
                    jimport('joomla.application.component.controller');
                    
                    /**
                     * Graph Component Controller
                     */
                    class GraphController extends JController {
                    
                        public function display($cachable = false, $urlparams = false) {
                            // Get document objet.
                            $document = JFactory::getDocument();
                            
                            // set the default view name and format from the resquest.
                            $vName      = JRequest::getCmd('view', 'graph');
                            $vFormat    = $document->getType();
                            $lName      = JRequest::getCmd('layout', 'default');
                            
                            if ($view = $this->getView($vName, $vFormat)) {
                                // Do any specific processing by view.
                                switch ($vName) {
                                    case 'choix':
                                        $model = $this->getModel('Choix');
                                        break ;
                                    case 'fichier':
                                       $model = $this->getModel('Fichier');
                                        break ;
                                    case 'utilisateur':
                                        $model = $this->getModel('Utilisateur');
                                        break ;
                                    case 'modif':
                                        $model = $this->getModel('Modif');
                                        break ;
                                    default :
                                        $model = $this->getModel('Graph');
                                        break ;
                                }
                                
                                $view->setModel($model, true);
                                $view->setLayout($lName);
                                
                                $view->assignRef('document', $document);
                                $view->display();
                            }
                        }
                    }
                    Tu pourra plus m’orienter merci d'avance

                    Je pense que mon souci vien du fait que mon fichier choix.php est dans le même dossier que celui que graph.php
                    Vu que je fais appel au fichier choix.php par mon fichier fonction.js qui est lui appeler par mon bouton radio du fichier graph.php
                    Es-que le problème ne viendrai pas tous simplement que le fichier choix.php n'est pas au bonne endroits ???
                    Dernière édition par gandalf91 à 05/09/2011, 10h52

                    Commentaire


                    • #11
                      Re : création composant

                      J'ai un peut avancé

                      J'ai maintenant un message :

                      Fatal error: Call to a member function getName() on a non-object in C:\wamp\www\joomla\libraries\joomla\application\co mponent\view.php on line 437
                      Donc le souci vient de mon contrôleur mais où je ne sais pas ???

                      Je commence a avancer mais j'ai encore besoin d'aide
                      Merci d'avance pour votre aide

                      Commentaire


                      • #12
                        Re : création composant

                        Bonjour
                        J'avance encore un petit peut tout les jours mais voila le problème du jour

                        Quand j'execute mon scripte php qui fait appel a ma page de traitement je n'arrive pas a afficher que la parti de la page que j'ai besoin
                        Je fais appel a ma page par l'adresse index.php?option=com_graph&view=traitementUser
                        Mais j'ai toute la page qui s'affiche dans la div et non pas que le bou de page que je veux

                        J'ai lu pas mal de tuto et de doc mais toujours le même souci donc si quelqu'un peut m'aider merci d'avance

                        Commentaire


                        • #13
                          Re : création composant

                          Envoyé par gandalf91 Voir le message
                          Mais j'ai toute la page qui s'affiche dans la div et non pas que le bou de page que je veux
                          Tu dois ajouter &tmpl=component dans l'URL.

                          C'est mentionné dans un post que je t'avais déjà communiqué : http://forum.joomla.fr/showthread.ph...AJAX-Mootools&
                          Christophe (cavo789)
                          Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)
                          Développeur de marknotes, logiciel de gestion de prises de notes avec interface web et de multiples convertisseur https://github.com/cavo789/marknotes
                          Mes logiciels OpenSource : https://www.avonture.be

                          Commentaire


                          • #14
                            Re : création composant

                            Ok merci ****l cela fonctionne
                            mais j'ai un petit souci et oui encore lol
                            quand je fait
                            Code:
                            $userSelect = '';
                            $uresSelect = $_POST["idClient"]; // $_POST["idClient"] = admin il est bien remplis 
                            $user =& JFactory::getUser();
                            $db =& JFactory::getDBO();
                            $sql = "SELECT * FROM #__users WHERE username = ' ".$uresSelect." '";
                            $db->setQuery($sql);
                            $result = $db->loadObjectList();
                            var_dump($result);
                            $clients = array();
                            $i = 0 ;
                            foreach( $result as $rowSelect ) {
                                echo $rowSelect->title ." : ". $rowSelect->description."<br />";
                            }
                            Mon array a la sortie est vide mais quand je fait le select dans phpmyadmin il me retourne des valeur je comprend ou il me pers mes informations

                            Merci pour votre raiponce

                            Commentaire


                            • #15
                              Re : création composant

                              J'ai l'impression que tu ne prends pas assez de temps pour lire... Ni pour débugger.

                              Quel sera le résultat du code suivant ?

                              $sql = "SELECT * FROM #__users WHERE username = ' ".$uresSelect." '";

                              Cela va donner un truc comme

                              SELECT * FROM #__users WHERE username = ' gandalf91 '

                              Est-ce bien comme cela ? Espace gandalf91 espace ?

                              Tu utilises un var_dump; utilise aussi un echo '*'.$sql.'*'; pour voir ton instruction et pour pouvoir la copier/coller dans phpMyAdmin.
                              Christophe (cavo789)
                              Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)
                              Développeur de marknotes, logiciel de gestion de prises de notes avec interface web et de multiples convertisseur https://github.com/cavo789/marknotes
                              Mes logiciels OpenSource : https://www.avonture.be

                              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

                              Partenaire de l'association

                              Réduire

                              Hébergeur Web PlanetHoster
                              Travaille ...
                              X