Petites questions multiples (débutant)

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

  • Petites questions multiples (débutant)

    Bonjour à tous,
    Dans le cadre de mon projet de 3ème année, je dois développer un site web pour une association d'étudiants, et j'ai donc naturellement choisi Joomla car la communauté est très importante et que j'ai déjà été un peu familiarisé avec.

    Certains fonctionnalités demandées n'existent pas, et donc, j'ai du développer un composant spécifique. Pour ce faire, je me suis attelé à la tache grâce au tutoriel sur le wiki.

    Cependant, j'ai quelques petites questions.
    Pour vous placer le contexte, il s'agit d'une extension qui permet d'inscrire des mouvements comptables de façon simplifiée (débit-crédit) avec une date et un libellé.

    Ma première question est : dans la page d'édition d'une opération, j'ai le champ date, qui est au format calendar dans mon XML contenu dans forms, et j'ai choisi un format européen, à savoir %d/%m/%Y. Mais la base de données attends du %Y-%m-%d. Je sais comment transformer le tout en PHP, mais je ne vois pas à quel moment je peux le faire en Joomla ?

    Ensuite, j'aimerais au niveau de la vue liste des opérations avoir un solde, donc basé sur une requête SQL. Je sais comment faire cette requête, je présume que je dois la mettre dans le model de mon operation, mais comment appeler la fonction depuis le model pour l'afficher dans la vue ?

    Pour finir, j'aimerais avoir un menu déroulant qui contient les années qui permettrait de filtrer mes opérations en fonction de l'année pour n'afficher que celle de l'année en cours. Je vois également comment faire en Jquery/PHP mais franchement, avec Joomla, j'ai un peu du mal.

    Je suis désolé si mes questions sont un peu idiotes, je débute sur le développement de composant, et même si je saisis le modèle MVC, j'ai un peu du mal à saisir le fonctionnement Joomla, tout du moins, au travers du tuto sur le wiki.

    Merci à ceux qui m'auront lu et qui me répondront.

    Bonne journée

  • #2
    Re : Petites questions multiples (débutant)

    Bonjour,

    Les questions ne sont pas idiotes tant qu'on a essayé de trouver une solution tout seul dans un premier temps et qu'on le demande poliment.

    Date:
    Pour ce qui est de la date, je trouve que Joomla à quelques lacunes pour l’internationalisation des dates, par défaut je laisse la version US des dates, ce qui est d'ailleurs le cas dans Joomla.
    Mais si tu veux vraiment t'embêter, il faut que tu transformes ta date avant de l'enregistrer dans ta base de données. Ca se passe donc dans ton model.
    Le mieux est à mon avis de te servir de la méthode validate() (surchargé à partir de la classe JModelForm) du modèle à partir duquel tu souhaites sauvegarder.

    Appel model:
    C'est ta vue qui va venir appeler le modèle.
    Dans ta vue tu devrais avoir:
    Code PHP:
    $model =$this->getModel(); //On récpère le modèle par défaut de la vue
    $data $model->get('maMethodePourMonSolde'); //On récupère le solde
    $this->solde $data//On assigne la valeur à la variable solde de la vue 
    Dans ton model
    Code PHP:
    public function getmaMethodePourMonSolde(){
        
    //Ici la requete pour la bdd
        
    return $retourRequete;

    Affichage années:
    C'est un peu la même chose que précédemment.
    C'est toujours ta vue qui va demander à avoir les informations. Etant donné que ces dates peuvent être utilisées depuis n'importe quelle vue on préferera utiliser les helpers, comme ça on pourra appeler la méthode d'affichage des années depuis n'importe ou.

    Il y a un exemple sur http://docs.joomla.org/Developing_a_...ng_the_submenu.
    Cet exemple concerne l'affichage du sous menu de l'administration mais il faut t'en inspirer pour ce que tu veux faire.

    Dans ta classe HelloWorldHelper tu crées une méthode
    Code:
    getDate()
    qui retournera un tableau de dates ou même directement ton code html select.
    Dans ta vue (view.html.php) tu viens appeler cette méthode et assigner une variable de la vue
    Code PHP:
    $dates HelloWorldHelper::getDate(); //Récupération
    $this->datelist $dates//Assignation variable de la vue 
    Et surtout ne pas oublier de charger ton helper sinon tu auras droit à une belle erreur.
    Code PHP:
    JLoader::register('HelloWorldHelper'dirname(__FILE__) . DS 'helpers' DS 'helloworld.php'); 
    Aller au boulot

    Damien
    www.Crac-Design.com

    Commentaire


    • #3
      Re : Petites questions multiples (débutant)

      Salut,
      Merci pour ta réponse. J'ai oublié de préciser, au cas où ça peut être utile, que ce composant présente juste une vue pour l'administration et ne sera utilisé qu'en administration, rien côté site.
      Bon, après, je n'arrive pas à concrétiser ce qu'il s'est dit.

      1) pour changer la date, je ne trouve pas de méthode validate() dans le JModelAdmin, seulement une méthode save, dans laqueulle j'ai ajouté
      Code PHP:
          public function save($data)
          {
              
      $data->op_date date("Y-m-d",strtotime($data->op_date));
              return 
      parent::save($data);
          } 
      Mais cela ne semble pas faire d'effet du tout...

      2) Merci pour l'éclaircissement pour peupler la vue selon les fonctions qu'on veut nous même. Cependant, j'ignore comment lui passer une paramètre (vue qu'on a get('maFonction'), comment faire ?)

      3) EDIT 2 : Au temps pour moi, j'ai oublié de préciser le dossier dans mon XML d'install !
      EDIT : j'ai créé mon helper qui me renvoie un array pour créer une liste avec JHTML, mais alors même que je référence mon fichier helper dans mon fichier compta.php à la racine du composant, impossible de charger la classe ?

      Dans ma vue de la liste d'opérations :
      Code PHP:
      $options OperationsHelper::getYears();
              
      $dropdown JHTML::_('select.genericlist'$options'month''class="inputbox"''value''text'date('Y',time()));
              
      $this->assign('yearChooser'$dropdown); 
      Dans mon fichier de chargement
      Code PHP:
      //Charger le fichier Helper pour la liste d'opérations
      JLoader::register('OperationsHelper'dirname(__FILE__) . DS 'helpers' DS 'operations.php'); 
      Alors que ma classe s'appelle bien OperationsHelper et qu'elle se trouve dans le répertoire admin\helpers ?

      Merci en tout cas des réponses pour les deux points précédents
      Dernière édition par cdie à 04/11/2012, 15h49

      Commentaire


      • #4
        Re : Petites questions multiples (débutant)

        1/ C'est normal qu'il n'y ait pas la méthode validate dans Jmodeladmin puisqu'elle est dans la classe parente qui est JModelForm.
        Tu la surcharge dans ton model :
        Code PHP:
        public function validate($data,$form){ //Je suis plus sûr des paramètres
            //Ici tu fais ce que t'as a faire
            
        return parent::validate($data,$form);

        Il faut bien comprendre le concept des classes php et surtout des surcharges, extrêmement utilisé dans Joomla.

        Dans le save ça peut être aussi bien mais je pense que ta variable c'est un tableau et non pas un object, je pense que ton problème vient de là.

        2/ Tu ne peux pas passer de paramètres avec la méthode get('').
        Tu peux néanmoins appeler ta méthode avec son nom:
        Code PHP:
        $model->getmaMethodePourMonSolde(); //Dans le cas ou ta méthode de model s'appelle getmaMethodePourMonSolde 
        Après peut importe le nom que tu lui donnes, mais si elle commence par get tu pourras l'appeler via $model->get('sonom');

        3/ Impeccable

        Quelques conseils, utilise un IDE pour développer. Par exemple avec Netbeans en faisant un clic droit faire le nom de la classe parente tu peux accéder à sa déclaration, les méthodes surchargées sont affichées...
        Tu peux aussi faire du pas à pas en configurant ton serveur correctement, il y a des tutos sur le net.

        Utilise le composant JDump, il n'y a pas mieux pour faire des dump de variables et savoir quel est le type de variable ainsi que ce qu'elle contient.

        Et le dernier et pas des moindres, décortiques autant que tu peux le core de Joomla, tu apprendras les concepts de Joomla et les bonnes manières de développer sous Joomla.
        En plus le code est documenté tu trouveras dans chaque méthode toutes les infos sur ce qu'elle fait.

        Une fois que tu as saisi les concepts et que tu as une bonne méthode de travail tu peux venir à bout de n'importe quel code.
        En gros, un bon IDE, du dump de variable qui tient la route, du pas à pas si nécessaire pour savoir par quels fichiers tu passes, de la concentration et aimer bouffer un peu de code au petit dej et ça devient un vrai plaisir de coder sous Joomla!

        Damien
        www.Crac-Design.com

        Commentaire


        • #5
          Re : Petites questions multiples (débutant)

          1) Merci pour la précision, effectivement, j'ai mal lu l'API, c'est bien un array. Donc oui, dans la méthode save (qui est override du coup), ça fonctionne en le traitant comme array, ça me permet d'avoir mes dates de façons correctes.
          2) Merci pour la précisions

          Et en général, merci pour tes conseils. J'ai l'habitude de développer des pages web à partir de rien, il faut dire qu'il faut un gros temps d'adaptation à la façon de faire Joomla, je pense pouvoir m'en sortir. Au pire, je sais où venir demander

          Commentaire


          • #6
            Re : Petites questions multiples (débutant)

            Bonjour,

            En ce qui concerne les dates, il peut être intéressant 'utiliser la classe JDate http://api.joomla.org/11.4/Joomla-Pl...ies/JDate.html qui étend la classe DateTime native de PHP et simplifie grandement les manipulations et le formatage.
            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

            Annonce

            Réduire
            Aucune annonce pour le moment.

            Partenaire de l'association

            Réduire

            Hébergeur Web PlanetHoster
            Travaille ...
            X