Contrôleur - Vue : exemple avancé avec Champs Extras - commentaires Contrôleur - Vue : exemple avancé avec Champs Extras 2021-04-10T22:36:09Z https://files.spip.net/Controleur-Vue-exemple-avance-avec-Champs-Extras#comment508142 2021-04-10T22:36:09Z <p>Bonjour,</p> <p>Merci beaucoup pour cette contribution<small class="fine d-inline"> </small>! Je suis néanmoins confronté à 3 problèmes détaillés ci-après. Pour le contexte, je précise que j'utilise des filtre Champs Extras associés aux articles.</p> <p><strong>1<sup class="typo_exposants">er</sup> problème</strong><br class="autobr"> Lorsque j'intègre le code tel quel dans mon site en développement (pas en ligne donc), en adaptant bien sur les appels de filtre pour que cela corresponde à mes données, j'obtiens le rapport d'erreur suivant :</p> <table class="table spip"> <tbody> <tr class="row_odd odd"> <td>Numéro</td> <td>Message</td> <td>squelette</td> <td>boucle</td> <td>Ligne</td></tr> <tr class="row_even even"> <td>1</td> <td>Champ LISTER_CHOIX hors boucle</td> <td>squelettes/inclure/actus_filtres.html</td> <td>/</td> <td>8</td></tr> <tr class="row_odd odd"> <td>2</td> <td>Champ LISTER_CHOIX hors boucle</td> <td>squelettes/inclure/actus_filtres.html</td> <td>/</td> <td>4</td></tr> </tbody> </table> <p>J'ai solutionné en tentant un peu au hasard en ajoutant une boucle comme indiqué ci-après dans le fichier «<small class="fine d-inline"> </small>actus_filtres.html<small class="fine d-inline"> </small>» ( le «<small class="fine d-inline"> </small><i>0,1</i><small class="fine d-inline"> </small>» pour limiter le «<small class="fine d-inline"> </small>fieldset<small class="fine d-inline"> </small>» à 1 sinon j'ai l'impression d'en avoir autant que j'ai d'articles) :</p> <div class="precode"><pre class="spip_code spip_code_block language-spip" dir="ltr" style="text-align:left;" data-language="spip"><code><fieldset> <legend>Filtres</legend> <form action="#SELF" method="post" id="consulter_actus"> <BOUCLE_actu_controleur(ARTICLES){0,1}> [(#SAISIE{selection, type_contenu, label=<:label_categorie:>, option_intro='TOUT', datas=[(#LISTER_CHOIX**{type_contenu})]})] [(#SAISIE{selection, support, label=<:label_support:>, option_intro='TOUT', datas=[(#LISTER_CHOIX**{support})]})] <button type='submit' class='button small' type='submit'><:bouton_filtrer:></button> </BOUCLE_actu_controleur> </form> </fieldset></code></pre></div> <p><strong>2<sup class="typo_exposants">e</sup> problème - Le plus embêtant</strong><br class="autobr"> Le 2<sup class="typo_exposants">e</sup> filtre de sélection ne fonctionne pas et je ne comprends pas pourquoi...<br class="autobr"> A toute fin utile, je mets le contenu de mon équivalent au fichiers «<small class="fine d-inline"> </small>actualites.html<small class="fine d-inline"> </small>» et de mon fichier «<small class="fine d-inline"> </small>actus_liste.html<small class="fine d-inline"> </small>» :</p> <div class="precode"><pre class="spip_code spip_code_block language-spip" dir="ltr" style="text-align:left;" data-language="spip"><code><BOUCLE_principale(RUBRIQUES) {id_rubrique} {tout}> … <section> <h1>Les actualités</h1> <INCLURE{fond=inclure/actus_filtres, env}> <INCLURE{fond=inclure/actus_liste, env, ajax=actus_liste}> </section> … </BOUCLE_principale></code></pre></div><div class="precode"><pre class="spip_code spip_code_block language-spip" dir="ltr" style="text-align:left;" data-language="spip"><code><fieldset> <legend>Liste des actus</legend> <BOUCLE_listing_actus(ARTICLES){type_contenu?}{support?}> <a href="#URL_ARTICLE">#TITRE</a> <div>[(#LISTER_VALEURS{date_1}|annee)] / [(#LISTER_VALEURS{type_contenu})] / [(#LISTER_VALEURS{support})]</div> <div>[(#TEXTE|couper{100})]</div> </BOUCLE_listing_actus> </fieldset></code></pre></div> <p><strong>3<sup class="typo_exposants">e</sup> problème</strong><br class="autobr"> Je voudrais intégrer un troisième filtre sur une champs extra «<small class="fine d-inline"> </small>date_1<small class="fine d-inline"> </small>», mais celui-ci renvoie une sélection vide... Sachant qu'<i>in fine</i>, je voudrais n'afficher que l'<strong>année</strong> de ce champs date dans le filtre.<br class="autobr"> Voici le code que j'ai ajouté dans le fichier «<small class="fine d-inline"> </small>actus_filtres.html<small class="fine d-inline"> </small>» mais qui ne renvoie rien :</p> <div class="precode"><pre class="spip_code spip_code_block language-spip" dir="ltr" style="text-align:left;" data-language="spip"><code>[(#SAISIE{selection, date_1, label=<:label_support:>, option_intro='TOUT', datas=[(#LISTER_CHOIX**{date_1})]})]</code></pre></div> <p>Et dans le fichier «<small class="fine d-inline"> </small>actus_liste.html<small class="fine d-inline"> </small>» :</p> <div class="precode"><pre class="spip_code spip_code_block language-spip" dir="ltr" style="text-align:left;" data-language="spip"><code><fieldset> <legend>Liste des actus</legend> <BOUCLE_listing_actus(ARTICLES){type_contenu?}{support?}{date_1?}> <a href="#URL_ARTICLE">#TITRE</a> <div>[(#LISTER_VALEURS{date_1}|annee)] / [(#LISTER_VALEURS{type_contenu})] / [(#LISTER_VALEURS{support})]</div> <div>[(#TEXTE|couper{100})]</div> </BOUCLE_listing_actus> </fieldset></code></pre></div> <p>Voilà, si une âme charitable a quelques conseils à me donner, je suis preneur.</p> <p>Merci par avance.</p>