Comment utiliser la classe "JForm"

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

  • Comment utiliser la classe "JForm"

    Bonjour,

    j'essaye d'utiliser la classe JForm pour générer un formulaire.
    J'ai beau tourenr la question dans tous les sens et regarder tous les tutoriels que je trouve,
    j'ai toujours la même erreur

    Code HTML:
    <?php
    jimport( 'joomla.form.form' );
    		$pathFormXMLFile =  JPATH_COMPONENT . DS . 'models' . DS .  'forms' . DS . 'publiannonce.xml';
    		echo  $pathFormXMLFile;
    		
    		$form = JForm::getInstance('myform', $pathToMyXMLFile);
    
    ?>
    en front -> bookmark périmé
    en back -> 500 - Une erreur s'est produite
    en fait la même erreur

    où est donc mon erreur ?

    Merci pour vos lumières...

    Pi

  • #2
    Re : Comment utiliser la classe &quot;JForm&quot;

    Alors en l'absence de réponse, j'avance (un peu)

    M'appuyant sur le composant contact, j'ai trouvé ça
    dans le modele
    - class TerrainModelTerrain extends JModelForm
    à la place de :
    - class TerrainModelTerrain extends JModel

    ce qui évite l'erreur précédente,
    donc on trouve apparemment classe et méthodes.

    Cependant ça fonctionne toujours pas.
    Si je récupère cette ligne du composant contact :
    - $form = $this->loadForm('com_contact.contact', 'contact', array('control' => 'jform', 'load_data' => true));
    var_dump ( $form ) affiche false
    alors que la même ligne dans le composant contact affiche un object(JForm)[149]

    Personne n'utilise la classe JForm pour générer des formulaires et pourrait me débloquer ?
    Pi

    Commentaire


    • #3
      Re : Comment utiliser la classe &quot;JForm&quot;

      Toujours pas de réponse !!! j'ai connu ce forum plus actif (et réactif)
      Donc comme ça ça marche (mieux) :

      public function getForm($data = array(), $loadData = true)
      {

      $form = $this->loadForm ('com_terrain.terrain', 'terrain', array('control' => 'jform', 'load_data' => true));
      }

      avec le fichier components/com_terrain/models/forms/terrain.xml décrivant le formulaire

      En revanche ça devrait lancer la méthode
      protected function loadFormData() {
      }

      qui récupérerait les données pour peupler le formulaire (il me semble)
      En tout cas ça déclenche bien sur le composant "contact"

      Mais chez moi la méthode ne déclenche pas (pourtant il me semble vraiment avoir fait pareil)
      Donc c'est où que ça devrait déclencher (ou que ça le fait pas)

      J'ai vraiment rien trouvé sur le sujet dans toutes les docs du monde
      Personne pour m'aider, ou alors ?
      Pi

      Commentaire


      • #4
        Re : Comment utiliser la classe &quot;JForm&quot;

        Bonjour,

        Il y a eu il y a peu une très longue discussion sur le groupe Joomla genéral (google groups) concernant la classe JForm. Je pense que dans cette discussion, tu devrais trouver les réponses, pas toujours évidentes, cette classe étant parfois usine à gaz.
        http://groups.google.com/group/jooml...d8c8cda78609d4
        Pas de demande de support par MP.
        S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

        Commentaire


        • #5
          Re : Comment utiliser la classe &quot;JForm&quot;

          Merci pour cette piste,
          Pour l'instant j'ai pas trouvé ma réponse
          Je la mettrai ici ( si je la trouve)

          Je pensais pas que c'était si obscure
          Moi qui voulais utiliser plus rationnellement le FrameWork de Joomla

          En attendant je maintient mon appel
          pour trouver comment déclencher loadFormData()

          Pi

          Commentaire


          • #6
            Re : Comment utiliser la classe &quot;JForm&quot;

            JForm est une des classes les plus complexes de Platform, et une des moins bien documentées. Elle est destinée à la création de formulaires conformes W3C, et quelques composants l'utilisent, tous restant quelque peu complexes à décortiquer.

            Je tente de l'utiliser sur un développement spécifique client, je mettrai un tuto une fois le dev terminé
            Pas de demande de support par MP.
            S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

            Commentaire


            • #7
              Re : Comment utiliser la classe &quot;JForm&quot;

              Bon, le sujet a presque un an, mais il est bien référencé sur Google, donc je pose une soluce pour ceux que ça intéresse.... Du QUICK AND DIRTY JFORM...

              REMARQUE :
              L'idéal est de respecter le modèle MVC, en répartissant chacune des tâches entre le modèle, la vue, et le contrôleur Pour apprendre ça en détail, utilisez le tuto de création de composant MVC du site officiel de Joomla! (anglais)
              http://docs.joomla.org/Developing_a_...asic_Component

              1. Le fichier XML
              Soit un composant com_foo, avec un fichier xml com_foo/models/forms/bar.xml
              Ce fichier contient 2 champs de formulaire, regroupés en un fieldset :

              <?xml version="1.0" encoding="utf-8"?>
              Code:
              <form>
                  <fieldset name="primaryfieldset">
                      <field 
                          name="the_file" 
                          type="file" 
                          label="COM_FOO_FILE" 
                          description="COM_FOO_FILE_DESC" 
                          size="10"
                      />        
                      
                      <field 
                          name="a_check_box" 
                          type="checkbox" 
                          label="COM_FOO_A_CHECK_BOX" 
                          description="COM_FOO_A_CHECK_BOX_DESC" value="1" 
                      />
                  </fieldset>
              </form>

              vous trouverez ici une liste de tout les types de champs que vous pouvez utiliser dans un formulaire Joomla, certains sont très utiles comme l'éditeur WYSIWYG :
              http://docs.joomla.org/Standard_form_field_types



              2. Affichage des éléments du formulaire


              Pour afficher ce formulaire n'importe où en un seul bloque de lignes (c'est mal, il faut faire du MVC )

              Code PHP:
              <?php 
                              jimport
              'joomla.form.form' ); 
                              
              $form JForm::getInstance('com_foo.bar''bar');
                              foreach(
              $form->getFieldset('primaryfieldset') as $field)
                              {
                                  echo 
              $field->label;
                                  echo 
              $field->input
                              }
                          
              ?>
              Voilà ! Les éléments de votre formulaire s'affichent !


              3. Entête du Formulaire

              Pour la balise du formulaire elle-même, c'est à vous de la coder, en fonction du contrôleur auquel vous voulez envoyer les infos du formulaire. Par exemple, pour l'envoyer au sous-contrôleur 'bar' de votre composant (fichier : com_foo/controllers/bar.php) :

              Code PHP:
              <form action="<?php echo JRoute::_('index.php?option=com_foo&view=bar' ?>" method="post" name="adminForm">

              4. Choix de la méthode du contrôleur
              Pour appeler la méthode bar::save() de votre sous-contrôleur, ajouter un input hidden nommé task dans votre formulaire :

              Code HTML:
              <input type="hidden" name="task" value="bar.save" />
              5. Récapitulatif
              Au final, le snippet que vous pouvez copier/coller n'importe où ( c toujours mal... ) donne :
              Code PHP:
              <form action="<?php echo JRoute::_('index.php?option=com_foo&view=bar' ?>" method="post" name="adminForm">
                  <input type="hidden" name="task" value="bar.save" />
                      <ul>
                       <?php 
                              jimport
              'joomla.form.form' ); 
                              
              $form JForm::getInstance('com_foo.bar''bar');
                              foreach(
              $form->getFieldset('primaryfieldset') as $field)
                              {
                                  echo 
              '<li>'.$field->label.$field->input.'</li>'
                              }
                          
              ?>
                      </ul>
              </form>
              Ce formulaire appellera la méthode save() du contrôleur com_foo/controllers/bar.php lors de sa soumission .

              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