Comment afficher le même attribut dans deux zones d'attributs

Tags: #<Tag:0x00007f9e519671d8>

Bonjour,

Je n’arrive plus à afficher le même attribut d’un objet dans deux zones d’attributs du même objet en même temps.

Il me semble que cela était faisable avant : j’arrivais à afficher le champ, dans plusieurs zones d’attributs (onglets), sans avoir à en créer un autre non persistant.

Merci de me dire si c’est normal ou si je dois procéder autrement.
Abed.

Si ça a été possible à un moment c’était un bug.

Si vous avez besoin d’afficher 2 fois le même attribut à plusieurs endroits il faudra “bricoler” du JS pour le faire mais à vous de gérer ce qu’il faut faire si cet attribut est modifié 2 fois avec des valeurs différentes etc. Autre approche configurer un autre attribut non persistant et le valoriser dans le initUpdate avec la valeur de l’autre mais là aussi il faudra faire ce qu’il faut pour gérer 2 valeurs au lieu d’une…

Bref pour moi ce sont toutes des mauvaises solutions. Personnellement je ne ferais jamais une telle duplication d’attribut. Il y a forcément une autre approche, genre afficher l’attribut dans une zone toujours visible du formulaire.

Merci @david pour cette réponse rapide.
Je n’avais pas précisé que je faisais ceci uniquement pour les attributs en lecture seule. Je vais donc passer par la solution du "attribut non persistant ".

Ca reste une solution bancale car, par exemple, si vous exposez votre objet via des APIs l’utilisateur de cette API ne saura pas quel attribut est celui qu’il faut utiliser (à moins d’utiliser un nommage explicite)

De manière générale quand on en arrive à “abimer” son modèle métier logique pour une simple question de présentation UI c’est forcément une mauvaise approche.

Il me semble préférable d’afficher un tel attribut dans une zone d’entête toujours visible / factorisée.

Techniquement tout <div class="field" data-field="fieldname"></div> sera rempli par le champs, mais le template editor ne permet de le faire puisque un attribut d’objet ne peut être que dans une seule zone en base. Si on modifie le template à la main sans passer par l’éditeur, c’est surement possible mais au save on aura 2 fois le même input avec un même id = un seul sera envoyé au bon vouloir du getElementById.

Donc si vous voulez juste ré-afficher une valeur (sans label ni input), essayez d’ajouter
<div class="field" data-field="fieldname" data-display="value"></div>
dans votre template ou zone.