CMS Automne

Forum de la communauté du CMS Automne
Nous sommes actuellement le Dim Mai 05, 2024 12:23 pm

Le fuseau horaire est UTC [Heure d’été]




Publier un nouveau sujet Répondre au sujet  [ 13 messages ] 
Auteur Message
MessagePublié: Mar Jan 03, 2012 5:07 pm 
Hors-ligne

Inscrit(e) le : Jeu Oct 27, 2011 1:31 pm
Message(s) : 31
Bonjour,

Je cherche à lier deux objets d'un même module polymod ensemble, via un formulaire de création.

Pour être plus clair, voici la structure de mes deux objets :

Affaires :
-Libellé (texte)
-Code (texte)

Doc Qualité
-Libellé (texte)
-Fichier (fichier)
-.....
-Affaires (objet de type Affaires)

J'ai donc un formulaire atm-form dans une de mes pages pour créer un document qualité. La subtilité est que dans certains cas, un document peut être lié à une affaire. J'ai donc crée une liste déroulante dans mon formulaire pour choisir l'objet Affaires à lier.

A la validation, l'id de l'affaire sélectionnée est bien envoyé, mais le formulaire provoque une erreur. Cependant le document est bien créé, seule l'affaire reste vide. A force de chercher, je me suis rendu compte que c'est ma partie atm-form-callback qui semble provoquer l'erreur. c'est cette partie qui est normalement censée lier les deux objets. Voici le code correspondant :

Code :
<atm-form-callback form="createDoc">
       
        <!-- Ici nous choisissons de rechercher un objet Document_Qualite -->
        <atm-search what="{Affaires}" name="addDoc" public="false">
          <atm-search-param search="addDoc" type="item" value="{request:int:aff}" mandatory="true" />
          <atm-result search="addDoc">
            <!--
            Dans l'actualité trouvée nous ajoutons le nouvel objet Message créé par
            le formulaire dans le champ stockant les Messages
            -->
            <atm-object-link field="{Document_Qualite:Affaires}" objectId="{Affaires:id}" />
           
          </atm-result>
        </atm-search>
       
      </atm-form-callback>


En regardant dans les logs d'erreur, j'obtiens cette ligne :

Code :
2012-01-03 16:52:43|http|PHP Warning : Parameter 2 to form_createDoc() expected to be a reference, value given line 442 of file /var/www/automneV4/automne/classes/modules/polymod/poly_definition_functions.php


Apparemment, il y aurai un paramètre erroné quelque part mais ma connaissance atteint ses limites :oops:

Peut-être est-ce une mauvaise utilisation de la balise <atm-object-link>?

Si quelqu'un peut me donner une piste, je lui en serait fortement reconnaissant ;)


Haut
 Profil  
 
MessagePublié: Mar Jan 03, 2012 5:15 pm 
Hors-ligne
Administrateur
Avatar de l’utilisateur

Inscrit(e) le : Mer Juin 15, 2005 8:28 am
Message(s) : 759
Localisation : Sophia Antipolis
quelle est ta version d'Automne ?


Haut
 Profil  
 
MessagePublié: Mar Jan 03, 2012 5:20 pm 
Hors-ligne

Inscrit(e) le : Jeu Oct 27, 2011 1:31 pm
Message(s) : 31
C'est la version Automne 4.1.3!


Haut
 Profil  
 
MessagePublié: Mar Jan 03, 2012 5:26 pm 
Hors-ligne
Administrateur
Avatar de l’utilisateur

Inscrit(e) le : Mer Juin 15, 2005 8:28 am
Message(s) : 759
Localisation : Sophia Antipolis
Il va me falloir le code complet de ta rangée (ou au moins de ton tag atm-form concerné par le callback) sans quoi je vais pas m'en sortir. Peux tu me dire aussi quelle est ta version de PHP ?


Haut
 Profil  
 
MessagePublié: Mar Jan 03, 2012 5:30 pm 
Hors-ligne

Inscrit(e) le : Jeu Oct 27, 2011 1:31 pm
Message(s) : 31
Voici le code complet de ma rangée :

Code :
<row>
  <block module="QDoc" id="doc" language="fr">
    <atm-form what="{Document_Qualite}" name="createDoc" id="createDoc">
     
      <!--
      Cette partie permet d'effectuer des opérations suite à l'enregistrement du formulaire.
      Le contenu de ce tag sera exécuté après la soumission du formulaire et uniquement
      si la soumission s'est effectuée correctement.
      -->
      <atm-form-callback form="createDoc">
       
        <!-- Ici nous choisissons de rechercher un objet Document_Qualite -->
        <atm-search what="{Affaires}" name="addDoc" public="false">
          <atm-search-param search="addDoc" type="item" value="{request:int:aff}" mandatory="true" />
          <atm-result search="addDoc">
            <!--
            Dans l'actualité trouvée nous ajoutons le nouvel objet Message créé par
            le formulaire dans le champ stockant les Messages
            -->
            <atm-object-link field="{Document_Qualite:Affaires}" objectId="73" />
           
          </atm-result>
        </atm-search>
       
      </atm-form-callback>
      <!-- Cette partie affiche le message indiquant que le formulaire a été correctement enregistré -->
      <atm-if what="{filled}">
        <div class="mess_info">Votre document a bien été publié !</div>
      </atm-if>
     
      <!-- Cette partie affiche le formulaire si il n'est pas rempli ou comporte des erreurs -->
      <atm-if what="!{filled}">
       
        <!-- Cette partie affiche les erreurs éventuelles survenues lors de la soumission -->
        <atm-if what="{error}">
          <div class="mess_erreur">
            Une erreur est survenue durant la publication de votre document ...
            Veuillez réessayer.
          </div>
        </atm-if>
       
        <!-- Cette partie affiche une erreur à propos des champs manquants détectés lors de la soumission -->
        <atm-if what="{required}">
          <div class="mess_erreur">Les champs suivants sont requis :
            <ul>
              <atm-form-required form="createDoc">
                <li>{requiredname}</li>
              </atm-form-required>
            </ul>
          </div>
        </atm-if>
       
        <!-- Cette partie affiche une erreur à propos des champs incorrects détectés lors de la soumission -->
        <atm-if what="{malformed}">
          <div class="mess_erreur">Les champs suivants sont incorrects :
            <ul>
              <atm-form-malformed form="createDoc">
                <li>{requiredname}</li>
              </atm-form-malformed>
            </ul>
          </div>
        </atm-if>
       
        <!-- ... Ajoutez ici les champs atm-input composant votre formulaire ... -->
       
        <!-- Exemple de tag atm-input -->
        <div>
          <div class="mess_info">
            Pour publier un document, veuillez renseigner les informations ci-dessous. Tous les champs sont obligatoires.<br/><br/>
            La publication sera effective immédiatement et ne sera pas modifiable. Veuillez donc vérifiez les informations saisies avant de cliquer sur Publier!
          </div>
          <br/>
          <b>Titre :</b><br/>
          <atm-input field="{Document_Qualite:Titre}" form="createDoc" /><br/><br/>
          <b>Processus :</b><br/>
          <atm-input field="{Document_Qualite:Processus}" form="createDoc" /><br/><br/>
          <b>Type :</b><br/>
          <atm-input field="{Document_Qualite:Type}" form="createDoc" /><br/><br/>
          <b>Auteur :</b> <atm-input field="{Document_Qualite:Auteur}" form="createDoc" /><br/><br/>
          <b>Description :</b><br/>
          <atm-input field="{Document_Qualite:Description}" form="createDoc" /><br/><br/>
          <b>Date de publication :</b> <atm-input field="{Document_Qualite:Date_de_publication}" form="createDoc" /><br/><br/>
          <b>Affaire :</b>
          <select id="aff" name="aff">
            <option value=""></option>
            <atm-function function="selectOptions" object="{Affaires}" selected="{request:int:aff}"></atm-function>
          </select><br/><br/>
          <div id="div_fake_fic">
            <b>Fichier :</b> <atm-input field="{Document_Qualite:Fichier}" form="createDoc" /><br/><br/>
          </div>
        </div>
       
        <!-- Bouton de soumission du formulaire -->
        <center><input type="button" value="Publier le document" onclick="Valider()" /></center>
      </atm-if>
    </atm-form>
  </block>
</row>



Pour info, le code JS "Valider()" appelé au clic sur le bouton permet de vérifier que tous les champs ont bien été saisi en amont de la soumission du formulaire.

Pour PHP, voici la version telle qu'elle apparait dans Automne : 5.0.67-0ubuntu6-log

Merci pour l'aide!


Haut
 Profil  
 
MessagePublié: Mar Jan 03, 2012 5:37 pm 
Hors-ligne
Administrateur
Avatar de l’utilisateur

Inscrit(e) le : Mer Juin 15, 2005 8:28 am
Message(s) : 759
Localisation : Sophia Antipolis
Non c'est pas possible que tu sois sur une version 5.0 de PHP, Automne nécessite une version 5.2 minimum, il n’accepterai même pas de fonctionner. T'es sur de toi ? La version de PHP est la première chose affichée dans l'onglet Informations PHP coté admin (dans paramètres serveur du panneau latéral).


Haut
 Profil  
 
MessagePublié: Mar Jan 03, 2012 5:42 pm 
Hors-ligne

Inscrit(e) le : Jeu Oct 27, 2011 1:31 pm
Message(s) : 31
Oups, j'ai copié la ligne MySql :oops:

Effectivement, la version PHP est : 5.3.2-1ubuntu4.11

Désolé...


Haut
 Profil  
 
MessagePublié: Mar Jan 03, 2012 6:06 pm 
Hors-ligne
Administrateur
Avatar de l’utilisateur

Inscrit(e) le : Mer Juin 15, 2005 8:28 am
Message(s) : 759
Localisation : Sophia Antipolis
me disait bien aussi.
Ton pb vient d'un changement entre PHP 5.2 et PHP 5.3 qui n'est pas géré avec Automne 4.1.3. Il est normalement réglé dans Automne 4.2. Tu peux migrer en version 4.2.0 beta 4 et me dire ce que ça donne ?
Tu le trouvera là : http://www.automne-cms.org/web/fr/496-t ... 2-beta.php


Haut
 Profil  
 
MessagePublié: Mar Jan 03, 2012 6:09 pm 
Hors-ligne

Inscrit(e) le : Jeu Oct 27, 2011 1:31 pm
Message(s) : 31
Arf :(

Il s'agit d'un Intranet pour ma boîte, on a déjà une bonne base développée sur cette version, et passer en version béta en prod va surement poser problème...

Est-il possible de corriger ce bug sans passer en version béta?Sinon tant pis, j’essaierai de développer ca directement en PhP et de le coupler à Automne, mais ca va être une autre paire de manche ;)


Haut
 Profil  
 
MessagePublié: Mar Jan 03, 2012 6:13 pm 
Hors-ligne
Administrateur
Avatar de l’utilisateur

Inscrit(e) le : Mer Juin 15, 2005 8:28 am
Message(s) : 759
Localisation : Sophia Antipolis
non, compte tenu de l'impact, tu ne pas pas régler ça sans mettre à jour. Faut y passer. Ceci dit, t'es pas obligé de le régler en prod, tu fais une copie sur un serveur de dev, tu teste et si la migration se passe bien tu l'applique en prod ensuite.


Haut
 Profil  
 
MessagePublié: Mar Jan 03, 2012 6:17 pm 
Hors-ligne
Administrateur
Avatar de l’utilisateur

Inscrit(e) le : Mer Juin 15, 2005 8:28 am
Message(s) : 759
Localisation : Sophia Antipolis
non, attend je me trompe de bug, celui là est simple à régler :P
remplace la ligne indiquée dans ton erreur
Citer:
line 442 of file /var/www/automneV4/automne/classes/modules/polymod/poly_definition_functions.php

par celles là :
Code :
$funcName = 'form_'.$formID;
if (function_exists('form_'.$formID) && !$funcName($formID, $item)) {


Haut
 Profil  
 
MessagePublié: Mar Jan 03, 2012 6:19 pm 
Hors-ligne
Administrateur
Avatar de l’utilisateur

Inscrit(e) le : Mer Juin 15, 2005 8:28 am
Message(s) : 759
Localisation : Sophia Antipolis
j'ai oublié un truc, j'ai mis à jour le code au dessus.


Haut
 Profil  
 
MessagePublié: Mar Jan 03, 2012 6:32 pm 
Hors-ligne

Inscrit(e) le : Jeu Oct 27, 2011 1:31 pm
Message(s) : 31
Parfait!!

Ca règle effectivement le problème!

Merci beaucoup pour l'aide et la réactivité!Pour la peine je vais quand même monter une version de dèv sous la 4.2 béta, car il y a plusieurs améliorations que j'aimerai tester quand même (notamment le LDAP hinhinhin ;) )


Haut
 Profil  
 
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 13 messages ] 

Le fuseau horaire est UTC [Heure d’été]


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 13 invité(s)


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas insérer de pièces jointes dans ce forum

Recherche de:
Aller vers :  
cron
Powered by phpBB® Forum Software © phpBB Group
Traduit par Maël Soucaze et Elglobo © phpBB.fr