Module menu restaurant

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

  • [RÉGLÉ] Module menu restaurant

    Bonjour à tous,
    J'ai créer un module pour afficher le menu du jour d'un restaurant...
    Jusqu'ici, tout vas bien...
    Tout fonctionne, mais plutôt que faire un champ texte pour entre la date sous la forme "Lundi 1 janvier 1990" je voulais utiliser le champ "calendar"...
    Pour ca, je formate mon champ de cette façon : format="%A %d %B %Y" ce qui donne exactement le résultat escompté jusqu'au moment ou... j'enregistre...
    La, toute la page bug (plus d'affichage des menu de joomla, uniquement la page d'accueil du module" et lorsque je retourne dans la liste des modules, un message s'affiche "Alerte Champ requis: Renseignez une date"
    Je ne comprends pas l'erreur qui est la suivante :
    Erreur: 0 DateTime::__construct(): Failed to parse time string (Mardi Avril 2019) at position 0 (M): The timezone could not be found in the database
    Auriez vous une idée?
    Voici le code complet du champ :
    Code:
    <field name="menuDate" type="calendar" default="" label="Renseignez une date" description="" class="input-medium" required="true" filter="user_utc" format="%A %d %B %Y" showtime="false" todaybutton="false" filltable="false" translateformat="false" />
    A priori, il semblerait que le format de la date que je lui propose, à savoir "%A %d %B %Y" soit la source du problème, mais je ne vois pas la solution...
    Quelqu'un aurait il une idée?
    Dernière édition par Darkhan à 29/04/2019, 15h15

  • #2
    Il y a une difference entre l'utilisation du champ "calendar" pour entrer une date dans la base de données et l'affichage du résultat du dit champ.

    Exemple pour la date de création d'un article.

    Code:
            <field
                name="created"
                type="calendar"
                label="COM_CONTENT_FIELD_CREATED_LABEL"
                description="COM_CONTENT_FIELD_CREATED_DESC"
                translateformat="true"
                showtime="true"
                size="22"
                filter="user_utc"
            />
    affichera la date DANS le calendrier selon le format défini dans la string de langue, exemple pour fr-FR:
    Code:
    DATE_FORMAT_CALENDAR_DATE="%d-%m-%Y"
    DATE_FORMAT_CALENDAR_DATETIME="%d-%m-%Y %H:%M:%S" // si showtime est true
    soit:
    Code:
    29-04-2019 06:00:08

    Sera sauvegardé dans la db sous le format UNIX, quel que soit l'ordre jour mois année sous la forme
    2019-04-29 06:00:08
    Les formats utilisables (voir https://www.php.net/manual/fr/function.strftime.php ) ne peuvent être que numériques.
    cad pour le jour: %d ou %e, pour le mois %m, pour l'année %y ou %Y

    Son affichage dépendra du format défini dans le template:
    Code:
    JHtml::_('date', $displayData['item']->created, JText::_('DATE_FORMAT_LC3'))
    ici
    Code:
    DATE_FORMAT_LC3="j F Y"
    cad en utilisant les formats php ( voir https://www.php.net/manual/fr/function.date.php )
    ici "29 avril 2019"
    Jean-Marie Simonet / infograf768
    Joomla co-fondateur. Joomla Production Working Group.
    Sauf demande explicite de ma part, merci de ne pas utiliser de Message Privé pour poser des questions. Le forum est là pour ça.

    Commentaire


    • #3
      Bonjour infograf768 et merci pour cette réponse!
      Si je comprends bien, le champ "calendar" doit rester à un format standard "%Y-m%-d%" et être enregistrer sous cette forme en BDD sinon, celle-ci ne comprend pas le format de l'enregistrement, d'où les messages d'erreur que j'ai...
      C'est donc coté template qu'il faut modifier l'affichage, mais nous parlons bien ici du template "module" et non du template "site"!?
      Il faut donc, si j'ai bien tout compris, que dans mon fichier default.php de mon module, je prévois en amont de mon affichage la modification...
      J'ai donc codé ceci coté template !
      Code HTML:
      <?php
      $today3 = $params->get('madate');
      setlocale(LC_TIME, 'fr', 'fr_FR', 'fr_FR.ISO8859-1');   
      $today2 = strftime("%A %d %B %Y",strtotime("$today3"));
      ?>
      Ce qui m'affiche exactement le format que je désire... sauf que... j'ai un jour de retard à l'affichage alors que coté backoffice, la date est juste...
      Là encore...
      Dernière édition par Darkhan à 30/04/2019, 11h12

      Commentaire


      • #4
        Bon, j'ai résolu mon problème... mon jour de retard était du a la fonction
        Code HTML:
        filter="user_utc"
        J'ai viré le filtre et tout est rentré dans l'ordre...
        Tout va bien
        Dernière édition par Darkhan à 30/04/2019, 14h22

        Commentaire


        • #5
          Envoyé par Darkhan Voir le message
          Bonjour infograf768 et merci pour cette réponse!
          Si je comprends bien, le champ "calendar" doit rester à un format standard "%Y-m%-d%" et être enregistrer sous cette forme en BDD sinon, celle-ci ne comprend pas le format de l'enregistrement, d'où les messages d'erreur que j'ai...
          Non, il peut-être %d-%m-%Y, dans le xml du formulaire, mais ce sera l'affichage rendu par JQuery lors de la sélection de la date dans le calendrier.
          Ceci devant permettre aussi une saisie directe au clavier au format Français

          Mais avec translateformat="true" et sans forcer le format cela doit se faire tout seul normalement.

          Mais on parle bien là du champ date dans le formulaire de saisie.

          Voir : https://docs.joomla.org/Calendar_form_field_type/fr

          Lors d'un affichage simple dans une vue ou un module (donc sans saisie) là tu dois utiliser:
          JHtml::_('date', $nom_de_la_variable_date_a_afficher, $format_d_affichage) Et là tu peux mettre un format pour avoir éventuellement le jour et la mois en clair du type mardi 3 décembre xxxx Ceci comme te l'a très bien expliqué infograf768 dans sa réponse ci-dessus décembre.

          Concernant le décalage 1 jour c'est surprenant.
          Le framework stocke les heures en UTC, voir https://ordi-genie.com/joomla/develo...-et-les-heures
          Mais c'est 2 heures pas 1 jour de décalage... sauf si tu n'es pas en France ou que tu as fait test test entre 0H et 2H du matin (ce qui te ramène à la veille entre 22H et 24H) (si je ne me trompe pas entre l'heure d'été et d'hivers).

          Pour l'internationalisation, il est conseillé de respecter ce système et de stocker tes dates et datetimes en UTC.

          Pour l'affichage et la conversion selon la timezone du user courant tu peux aussi utiliser :
          Code PHP:
          $result JHtml::date($ma_date$le_format_voulu
          avec un
          Code PHP:
          use Joomla\CMS\HTML\HTMLHelper as JHtml
          au début de ton code pour être compatible Joomla 4.

          Voir /librairies/src/HTML/HTMLHelper.php ligne 782 qui te donnera les paramètres de la fonction :
          Code PHP:
              /**
               * Returns formated date according to a given format and time zone.
               *
               * @param   string   $input      String in a format accepted by date(), defaults to "now".
               * @param   string   $format     The date format specification string (see {@link PHP_MANUAL#date}).
               * @param   mixed    $tz         Time zone to be used for the date.  Special cases: boolean true for user
               *                               setting, boolean false for server setting.
               * @param   boolean  $gregorian  True to use Gregorian calendar.
               *
               * @return  string    A date translated by the given format and time zone.
               *
               * @see     strftime
               * @since   1.5
               */
              
          public static function date($input 'now'$format null$tz true$gregorian false)
              {
          .... 
          Dernière édition par roland_d_alsace à 30/04/2019, 15h30
          A tous les utilisateurs de Joomla du très Grand Est de la France et du Jura suisse
          Rejoignez le Joomla Users Groupe Alsace...
          roland_d_alsace va-t-il devenir roland_du_grand_est ?

          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