Skip to content

Afficher si sur constructeur de saisie

Suite à la remarque de @tcharlss en saisie_nombre#2

j'ai voulu testé un afficher_si sur un constructeur, et naturellement cela ne fonctionne pas car les name sont transformés dynamiquement en fonction de la place dans le constructeur.... et tout cela ne passe pas au moment du generateur de JS (qui du coup nous logue un champ inexistant).

La solution est a priori relativement simple : il faut que la fonction qui charge le constructeur precis cherche automatiquement tous les afficher_si et modifie les champs.

Une fonction afficher_si_prefixer($saisies, $prefixe) me parait le mieux.

Pour démo le constructeur testé

heritage: 'input'
titre: '<:saisie_nombre:saisie_nombre_titre:>'
description: '<:saisie_nombre:saisie_nombre_explication:>'
icone: 'images/saisies_nombre.png'
heritage_supprimer_options:
  - 'type'
  - 'maxlength'
heritage_modifier_options:
      -
        fusion: true
        options:
          nouveau_type_saisie: 'nombre'
          nom: 'defaut'
        verifier:
          type: 'decimal'
          options:
            normaliser: true
heritage_inserer_options:
      -
        chemin:
          - 0
          - 'saisies'
          - 1
        saisie: 'nombre'
        options:
          nom: 'decimales'
          label: '<:saisie_nombre:option_decimales_label:>'
          defaut: 0
          verifier:
            type: 'entier'
      -
        chemin:
          - 0
          - 'saisies'
          - 2
        saisie: 'input'
        options:
          nom: 'separateur_decimales'
          label: '<:saisie_nombre:option_separateur_decimales_label:>'
          defaut: ','
          afficher_si: '@decimales@ > 0'
      -
        chemin:
          - 0
          - 'saisies'
          - 3
        saisie: 'input'
        options:
          nom: 'separateur_milliers'
          label: '<:saisie_nombre:option_separateur_milliers_label:>'
          defaut: ' '
defaut:
  options:
    decimales: 0
    separateur_decimales: ','
    separateur_milliers: ' '
    label: '<:saisie_nombre:saisie_nombre_titre:>'
    size: 40
    # champs extras (definition du champ sql)
    sql: "FLOAT DEFAULT 0 NOT NULL"
  verifier:
    type: 'decimal'
    options:
      normaliser: 'on'
Modification effectuée par JamesRezo