web-dev-qa-db-fra.com

Comment utiliser l'attribut showon avec plusieurs conditions?

Dans un module Joomla 3.9.3, j'essaie, sans succès, d'afficher/masquer un champ avec showon en vérifiant les valeurs des trois autres champs

Mon XML:

<field
    name="foo"
    type="text"
/>
<field
    name="bar"
    type="text"
/>
<field
     name="fooimg"
    type="media"
    showon="foo!:[OR]bar!:"
/>
<field
    name="baz"
    type="radio"
    class="btn-group btn-group-yesno"
    showon="foo!:[OR]bar!:[AND]fooimg!:"
    default=""
    >
    <option value="bazval">JYES</option>
    <option value="">JNO</option>
</field>

Avec: showon="foo!:[OR]bar!:[AND]fooimg!:" sur le champ baz J'attends que baz soit affiché quand (foo ou bar a une valeur) et fooimg a aussi une valeur.

Mais les résultats sont:

    foo = true 
    bar = false
    fooimage = true
    baz is NOT SHOWED (should be showed)

    foo = false
    bar = true
    fooimage = true
    baz IS SHOWED (as aspected)

Avec fooimage ou foo et bar définis sur False, cela fonctionne comme prévu.

J'ai aussi essayé: "fooimg!:[AND]foo!:[OR]bar!:"

Qu'ai-je fait de mal?

3
Znort

Je ne sais pas vraiment si cela peut vous aider, mais puisque le champ fooimg n'est affiché que lorsque foo ou barest vrai, alors dans le champ baz vous n'avez pas à vérifier à nouveau, il suffirait donc de vérifier si le champ fooimg est true ou non, donc:

<field
    name="baz"
    type="radio"
    class="btn-group btn-group-yesno"
    showon="fooimg!:"
    default=""
    >
    <option value="bazval">JYES</option>
    <option value="">JNO</option>
</field>

Ce champ baz ne sera affiché que si le fooobar n'est pas vide etfooimg n'est pas vide. Donc, vous obtenez simplement le même résultat (que vous vouliez réellement obtenir).

0
Zollie