Boucle dans formulaire

  Bonjour à tous,

  Je bute sur une histoire de boucle dans un formulaire CVT classique et
j'avoue ne pas saisir. Soit le code html suivant :

[(#REM) Formulaire membre sympathisant]
<form action='#ENV{action}' method='post' class='inscription'>
    <fieldset>
        <legend>Membre sympathisant</legend>
        #ACTION_FORMULAIRE{#ENV{action}}

        <div class='select'>
        <label>Appartenance</label>
        [<span class='erreur'>
                (#ENV**{erreurs}|table_valeur{collectif})</span>]
        <select name='collectif'>
            <option value="0" [(#ENV{collectif}|=={0}|oui) selected>
                Aucun
            </option>
        </select>
        </div>

       <div class='bouton'>
            <input type='submit' name='ok' value='Enregistrer' />
            [<div class='formulaire_ok'>(#ENV*{message_ok})</div>]
            [<div class='formulaire_erreur'>(#ENV*{message_erreur})</div>]
        </div>
    </fieldset>
</form>

  Ce formulaire fonctionne. Si jamais j'ai l'idée saugrenue de coller
dans ce formulaire une boucle, par exemple ceci :

        <BOUCLE_A{ARTICLES}>
            #TITRE
        </BOUCLE_A>

quel que soit l'endroit de la boucle, le formulaire est tout simplement
ignoré (pas d'erreur, juste l'interprétation du squelette qui s'arrête).

  La boucle en question est juste une simple boucle, dans les faits,
j'aimerais écrire :

        <div class='select'>
        <label>Appartenance</label>
        [<span class='erreur'>
            (#ENV**{erreurs}|table_valeur{collectif})</span>]
        <select name='collectif'>
            <option value="0" [(#ENV{collectif}|=={0}|oui) selected>
                Votre choix
            </option>
            <BOUCLE_collectifs{COLLECTIFS}{par nom}>
                <option value="#ID_COLLECTIF"
                        [(#ENV{collectif}|=={#ID_COLLECTIF}|oui) selected]>
                    #NOM
                </option>
            </BOUCLE_collectifs>
        </select>
        </div>

  Je viens de lire la^Wle peu de documentation disponible, j'avoue ne pas
comprendre. Il existe des exemples sur le site officiel de Spip avec des
boucles dans un formulaire CVT mais pas moyen de le faire fonctionner.

  Je ne suis pas bien sûr que ce problème soit spécifique à Escal, mais
je doute obtenir une réponse valable sur les listes spip et spip-dev.
Malheureusement.

  Bien cordialement,

  JB

Je suis fait beaucoup aidé pour le formulaire contact d'escal sur la liste spip.
Je pense que tu trouveras plus d'aide là-bas qu'ici.

Sinon, tu as bien un fichier php et un fichier html pour ton formulaire ?

JC

Le 23/12/2020 à 13:08, BERTRAND Joël a écrit :

  Bonjour à tous,

  Je bute sur une histoire de boucle dans un formulaire CVT classique et
j'avoue ne pas saisir. Soit le code html suivant :

[(#REM) Formulaire membre sympathisant]
<form action='#ENV{action}' method='post' class='inscription'>
     <fieldset>
         <legend>Membre sympathisant</legend>
         #ACTION_FORMULAIRE{#ENV{action}}

         <div class='select'>
         <label>Appartenance</label>
         [<span class='erreur'>
                 (#ENV**{erreurs}|table_valeur{collectif})</span>]
         <select name='collectif'>
             <option value="0" [(#ENV{collectif}|=={0}|oui) selected>
                 Aucun
             </option>
         </select>
         </div>

        <div class='bouton'>
             <input type='submit' name='ok' value='Enregistrer' />
             [<div class='formulaire_ok'>(#ENV*{message_ok})</div>]
             [<div class='formulaire_erreur'>(#ENV*{message_erreur})</div>]
         </div>
     </fieldset>
</form>

  Ce formulaire fonctionne. Si jamais j'ai l'idée saugrenue de coller
dans ce formulaire une boucle, par exemple ceci :

         <BOUCLE_A{ARTICLES}>
             #TITRE
         </BOUCLE_A>

quel que soit l'endroit de la boucle, le formulaire est tout simplement
ignoré (pas d'erreur, juste l'interprétation du squelette qui s'arrête).

  La boucle en question est juste une simple boucle, dans les faits,
j'aimerais écrire :

         <div class='select'>
         <label>Appartenance</label>
         [<span class='erreur'>
             (#ENV**{erreurs}|table_valeur{collectif})</span>]
         <select name='collectif'>
             <option value="0" [(#ENV{collectif}|=={0}|oui) selected>
                 Votre choix
             </option>
             <BOUCLE_collectifs{COLLECTIFS}{par nom}>
                 <option value="#ID_COLLECTIF"
                         [(#ENV{collectif}|=={#ID_COLLECTIF}|oui) selected]>
                     #NOM
                 </option>
             </BOUCLE_collectifs>
         </select>
         </div>

  Je viens de lire la^Wle peu de documentation disponible, j'avoue ne pas
comprendre. Il existe des exemples sur le site officiel de Spip avec des
boucles dans un formulaire CVT mais pas moyen de le faire fonctionner.

  Je ne suis pas bien sûr que ce problème soit spécifique à Escal, mais
je doute obtenir une réponse valable sur les listes spip et spip-dev.
Malheureusement.

  Bien cordialement,

  JB
_______________________________________________
Spip-avec-escal@rezo.net - https://listes.rezo.net/mailman/listinfo/spip-avec-escal

Jean Christophe Villeneuve a écrit :

Je suis fait beaucoup aidé pour le formulaire contact d'escal sur la
liste spip.
Je pense que tu trouveras plus d'aide là-bas qu'ici.

Sinon, tu as bien un fichier php et un fichier html pour ton formulaire ?

  Oui, naturellement.

  Concernant la liste spip, je suis persona non grata parce que j'ai osé
dire tout haut ce que certains (visiblement assez nombreux vues les
réactions que j'ai eu par mail) n'osent dire que tout bas après avoir
perdu un temps délirant en raison de choix politiques... pour le moins
discutables et de lecteurs Braille.

  Pour revenir au sujet, le truc est que je n'ai strictement aucune
information de debug nulle part. La boucle (en fait l'ouverture de la
boucle) fait planter Spip sans aucun message.

  Bien cordialement,

  JB

Juste une question : tu parles de

BOUCLE_A{ARTICLES}

mais c'est pas des accoladse qu'il faut mais des parentheses

BOUCLE_A(ARTICLES)

Ne serait-ce pas simplement ça ?

JC

Le 23/12/2020 à 14:07, BERTRAND Joël a écrit :

Jean Christophe Villeneuve a écrit :

Je suis fait beaucoup aidé pour le formulaire contact d'escal sur la
liste spip.
Je pense que tu trouveras plus d'aide là-bas qu'ici.

Sinon, tu as bien un fichier php et un fichier html pour ton formulaire ?

  Oui, naturellement.

  Concernant la liste spip, je suis persona non grata parce que j'ai osé
dire tout haut ce que certains (visiblement assez nombreux vues les
réactions que j'ai eu par mail) n'osent dire que tout bas après avoir
perdu un temps délirant en raison de choix politiques... pour le moins
discutables et de lecteurs Braille.

  Pour revenir au sujet, le truc est que je n'ai strictement aucune
information de debug nulle part. La boucle (en fait l'ouverture de la
boucle) fait planter Spip sans aucun message.

  Bien cordialement,

  JB
_______________________________________________
Spip-avec-escal@rezo.net - https://listes.rezo.net/mailman/listinfo/spip-avec-escal

Jean Christophe Villeneuve a écrit :

Juste une question : tu parles de

BOUCLE_A{ARTICLES}

mais c'est pas des accoladse qu'il faut mais des parentheses

BOUCLE_A(ARTICLES)

Ne serait-ce pas simplement ça ?

  Je vais aller me cacher... Bien vu. Il faut vraiment que je change de
lunettes, mais dans mon coin, il reste cinq ophtalmos pour le
département et on en est à trois ans d'attente pour un rendez-vous. :frowning:

  C'était tellement gros que je n'avais pas vu. Effectivement, avec :

        <div class='select'>
        <label>Appartenance</label>
        [<span class='erreur'>
                (#ENV**{erreurs}|table_valeur{collectif})</span>]
        <select name='collectif'>
            <option value="0" [(#ENV{collectif}|=={0}|oui) selected>
                Aucun
            </option>
            <BOUCLE_collectifs(COLLECTIFS){par nom}>
                <option value="#ID_COLLECTIF"
                        [(#ENV{collectif}|=={#ID_COLLECTIF}|oui) selected]>
                    #NOM
                </option>
            </BOUCLE_collectifs>
        </select>
        </div>

ça fonctionne normalement. Pour info, cette erreur de syntaxe devrait
lever une erreur dans Spip à la ligne 92 de ecrire/public/composer.php.
Sauf que... sauf que c'est encore un truc mal géré et au lieu de lever
une exception, ça fait planter le code php avec :

  eval()'d code on line 3

parce qu'il y a encore des tas de caractères non échappés...

  Merci pour tout et bonnes fêtes.

  JB