Afficher uniquement la valeur d'un texte long dans un formulaire en préservant les retours à la ligne

Tags: #<Tag:0x00007f9e4c548958>

Bonjour,

Pour l’élément “Texte long” la valeur est modifiée selon le type de “Afficher”.
projetsProd
Par exemple, avec :

setFieldValue(“myLongText”, “1\n2”);

Avec “input” pour Afficher j’ai ce résultat :
1jump2

Et pour “value” j’ai :
image
Le saut de ligne disparaît, savez vous comment faire en sorte qu’ils soient identiques ?

Concernant le changement de mode de “Afficher” pouvez vous me dire comment faire une modification de masse de cette propriété (j’ai plus d’une centaine de champ à modifier) ?

Merci, cordialement,

William

Dans un template, un champ affiche son label + input par défaut, sinon il faut préciser un attribut supplémentaire :

  • data-display="input" : affiche le champ de saisie = pour un “text long” sans rendering particulier c’est un <textarea> qui préserve les retours à la ligne comme un <pre>.
  • data-display="value" : affiche la valeur brute sans transformation, ni mise en forme, ni préservation (textarea ou pre), c’est justement le but de mettre la valeur dans ce qui vous convient dans votre template comme un <pre class="field" data-field="myfield" data-display="value"></pre> et pas un simple div qui ne préserve pas les “\n”

L’usage de l’un ou l’autre n’est donc pas équivalent :

  • Votre besoin est plus d’afficher l’input (textarea) et de rendre le champ non-modifiable.
  • ou alors d’utiliser un rendering HTML pour avoir des <br/> au lieu de “\n”

Il n’y a pas de mise à jour en masse de cette propriété par UI puisque c’est un attribut du <div class="field" data-field="myfield" data-display="value"> dans le template. Pour mettre à jour en masse, il faut exporter votre module en XML et modifier avec un “replace all”, puis réimporter votre module.

Genre replace <div class="field" by <pre class="field" data-display="value" sur les champs souhaités.
Mais l’approche read-only d’un textarea me semble bien plus simple si vos données contiennent des “\n”.

1 Like

note:

  • l’éditeur de template ne permet pas de tout paramétrer, comme changer un “div” en “pre”, il faut ouvrir le template de l’objet ou de la zone et le modifier directement.
  • Idem pour insérer du HTML particulier (table, div, texte en dur…). l’éditeur permet de paramétrer les cas nominaux de paramétrage comme mapper des champs dans des zones et des colonnes, ajouter une vue, un texte traduit…
  • aussi quand on fait “save” sur le template editor, on peut accéder à chaque template HTML (objet + zones) et les modifier avant d’enregistrer.

Merci pour la réponse.
Je ne penses pas que le Remplace dans le Xml fonctionne. Car il faudrait changer la balise ouvrante ET fermante autour des data-display qui ont tous une valeur différente.
Je ne vois pas d’autres solutions que de tout faire à la main ou de coder un parser pour modifier le xml…