Toujours accepter des vrais booléens pour les saisies déclarées en php
#147
Open
opened 1 year ago by tcharlss
·
11 comments
No Branch/Tag Specified
constructeur_glisser_deposer
conteneur_inline
explication_simplifier_conteneur
fieldset_simplifier_conteneur
issue24_data_choix_autre
issue261_etoile_message_erreur
issue99
issue_48
master
no_submit
php8
v1
v2
v3
v1.42.11
v1.42.5
v2.0.0
v2.0.1
v2.0.2
v2.0.3
v2.0.4
v2.0.5
v2.1.0
v2.1.1
v2.1.2
v2.1.3
v2.10.0
v2.11.0
v2.11.1
v2.11.2
v2.12.0
v2.13.0
v2.14.0
v2.14.1
v2.14.2
v2.14.3
v2.14.4
v2.14.5
v2.14.6
v2.14.7
v2.14.8
v2.15.0
v2.15.1
v2.15.2
v2.16.0
v2.16.1
v2.16.2
v2.17.0
v2.17.1
v2.18.0
v2.18.1
v2.18.10
v2.18.11
v2.18.12
v2.18.13
v2.18.14
v2.18.15
v2.18.16
v2.18.17
v2.18.18
v2.18.19
v2.18.2
v2.18.20
v2.18.21
v2.18.22
v2.18.23
v2.18.24
v2.18.3
v2.18.4
v2.18.5
v2.18.6
v2.18.7
v2.18.8
v2.18.9
v2.19.0
v2.19.1
v2.19.2
v2.19.3
v2.19.4
v2.19.5
v2.19.6
v2.19.7
v2.19.8
v2.19.9
v2.2.0
v2.2.1
v2.2.2
v2.2.3
v2.20.0
v2.20.1
v2.21.0
v2.21.1
v2.21.2
v2.21.3
v2.21.4
v2.22.0
v2.23.0
v2.23.1
v2.23.2
v2.23.3
v2.23.4
v2.23.5
v2.23.6
v2.24.0
v2.24.1
v2.24.2
v2.24.3
v2.25.0
v2.25.1
v2.25.2
v2.25.3
v2.25.4
v2.26.0
v2.26.1
v2.26.10
v2.26.2
v2.26.3
v2.26.4
v2.26.5
v2.26.6
v2.26.7
v2.26.8
v2.26.9
v2.27.0
v2.28.0
v2.3.0
v2.3.1
v2.4.0
v2.5.0
v2.5.1
v2.5.10
v2.5.11
v2.5.12
v2.5.13
v2.5.14
v2.5.15
v2.5.16
v2.5.17
v2.5.18
v2.5.19
v2.5.2
v2.5.20
v2.5.21
v2.5.22
v2.5.23
v2.5.24
v2.5.25
v2.5.26
v2.5.27
v2.5.28
v2.5.29
v2.5.3
v2.5.30
v2.5.4
v2.5.5
v2.5.6
v2.5.7
v2.5.8
v2.5.9
v2.6.0
v2.6.1
v2.6.2
v2.6.3
v2.7.0
v2.7.1
v2.7.10
v2.7.11
v2.7.12
v2.7.13
v2.7.14
v2.7.2
v2.7.3
v2.7.4
v2.7.5
v2.7.6
v2.7.7
v2.7.8
v2.7.9
v2.8.0
v2.8.1
v2.9.0
v3.0.0
v3.1.0
v3.10.0
v3.10.1
v3.11.0
v3.11.1
v3.11.2
v3.12.0
v3.12.1
v3.12.2
v3.12.3
v3.12.4
v3.12.5
v3.12.6
v3.12.7
v3.13.0
v3.13.1
v3.13.2
v3.13.3
v3.13.4
v3.14.0
v3.15.0
v3.16.0
v3.16.1
v3.17.0
v3.18.0
v3.18.1
v3.18.10
v3.18.11
v3.18.12
v3.18.13
v3.18.14
v3.18.2
v3.18.3
v3.18.4
v3.18.5
v3.18.6
v3.18.7
v3.18.8
v3.18.9
v3.19.0
v3.19.1
v3.19.2
v3.19.3
v3.19.4
v3.19.5
v3.19.6
v3.2.0
v3.2.1
v3.20.0
v3.21.0
v3.21.1
v3.21.2
v3.21.3
v3.21.4
v3.22.0
v3.22.1
v3.23.0
v3.23.1
v3.23.2
v3.23.3
v3.23.4
v3.24.0
v3.25.0
v3.25.1
v3.26.0
v3.26.1
v3.27.0
v3.27.1
v3.27.2
v3.27.3
v3.27.4
v3.27.5
v3.27.6
v3.27.7
v3.28.0
v3.28.1
v3.28.10
v3.28.11
v3.28.12
v3.28.13
v3.28.14
v3.28.15
v3.28.16
v3.28.2
v3.28.3
v3.28.4
v3.28.5
v3.28.6
v3.28.7
v3.28.8
v3.28.9
v3.29.0
v3.29.1
v3.3.0
v3.3.1
v3.3.2
v3.3.3
v3.3.4
v3.30.0
v3.30.1
v3.30.2
v3.31.0
v3.31.1
v3.31.2
v3.31.3
v3.32.0
v3.36.2
v3.37.0
v3.37.1
v3.38.0
v3.38.2
v3.39.0
v3.4.0
v3.40.0
v3.40.1
v3.41.0
v3.41.3
v3.41.5
v3.41.6
v3.42.0
v3.42.1
v3.42.2
v3.42.5
v3.42.6
v3.42.7
v3.42.8
v3.43.0
v3.43.2
v3.43.3
v3.43.4
v3.43.5
v3.44.0
v3.44.1
v3.45.0
v3.45.1
v3.45.2
v3.46.0
v3.47.0
v3.47.1
v3.47.2
v3.47.3
v3.48.0
v3.48.1
v3.48.2
v3.49.0
v3.49.1
v3.5.0
v3.5.1
v3.50.0
v3.50.1
v3.50.2
v3.51.0
v3.51.1
v3.51.2
v3.51.3
v3.51.4
v3.51.5
v3.51.6
v3.51.7
v3.51.8
v3.52.0
v3.52.1
v3.52.2
v3.53.0
v3.53.1
v3.53.2
v3.53.3
v3.54.0
v3.54.1
v3.54.10
v3.54.2
v3.54.4
v3.54.6
v3.54.7
v3.54.8
v3.54.9
v3.55.0
v3.55.1
v3.55.2
v3.55.3
v3.55.4
v3.56.0
v3.56.1
v3.56.2
v3.56.3
v3.56.4
v3.56.5
v3.6.0
v3.6.1
v3.6.2
v3.6.3
v3.6.4
v3.7.0
v3.7.1
v3.7.2
v3.8.0
v3.8.1
v3.8.10
v3.8.11
v3.8.2
v3.8.3
v3.8.4
v3.8.5
v3.8.6
v3.8.7
v3.8.8
v3.8.9
v3.9.0
v3.9.1
v4.0.2
v4.0.3
v4.0.4
v4.1.0
v4.2.0
v4.2.1
v4.2.3
v4.3.0
v4.3.1
v4.3.2
v4.3.3
v4.3.4
v4.3.5
v4.3.6
v4.4.0
v4.4.1
v4.5.0
v4.5.1
v4.6.0
v4.6.1
v4.7.0
v4.7.1
No Label
amélioration
bug
doublon
help wanted
invalide
question
refusé
Milestone
Set milestone
Clear milestone
No items
No Milestone
Assignees
Assign users
Clear assignees
No Assignees
5 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.
No due date set.
Dependencies
This issue currently doesn't have any dependencies.
Reference in new issue
There is no content yet.
Delete Branch '%!s(MISSING)'
Deleting a branch is permanent. It CANNOT be undone. Continue?
No
Yes
Certaines options des saisies sont conceptuellement des booléens, mais on peut utiliser le texte
oui
ounon
comme valeur, ça ok pas de problème : c'est pour contourner les limites posées par certains cas d'usages.Par contre quand on déclare les saisies "proprement" en php, on devrait toutjours pouvoir passer une vraie valeur booléenne et pas le pseudo oui|non.
Actuellement c'est un peu du 50/50, pour certaines options ça passe, pour d'autres pas, on se retrouve avec un mélange pas joli joli :
Donc faudra faire une passe pour harmoniser tout ça amha.
Tu aurais un exemple de où cela passe ? pour voir comment on gère concrètement cela dans les squelettes ?
Ça risque de pas être évident.
Faudrait voir un exemple qui marche.
Mais plus globalement je me dit que c'est un problème plus globale à SPIP non, le"comment passer un booléen à un squelette" ?
Alors ça se passe en 2 endroits :
obligatoire
,readonly
etdisable
multiple
, etc.Par ordre de priorité, je pense qu'il faudrait régler :
Pour les exemples qui marchent pas, on a
readonly=true
etobligatoire=true
.Et à l'inverse
multiple=true
fonctionne dans la saisie selection par exemple, maismultiple="non"
ne fonctionne pas !Si c'est pas forcément évident à régler, c'est pas non plus impossible :)
Pour normaliser dans toutes les saisies, il faudrait peut-être passer par un filtre
|saisies_booleen
afin d'avoir le même résultat partout.Dans les squelettes pour passer un vrai booléen on peut faire
#EVAL{true}
, mais là c'est plus une question propre à saisies, car on décide d'accepter en plus les pseudos valeurs oui-non pour simplifier.Tests
J'ai commencé à tester quelques options avec ça (readonly, multiple et obligatoire) :
Nomenklatura
Un mot sur les 3 options communes à toutes les saisies en passant : on a quand même un beau mélange là :)
Pour une option c'est le vrai nom anglais de l'attribut html (readonly), pour l'autre c'est du français (obligatoire), et pour la dernière c'est de l'anglais mais pas le vrai nom de l'attribut (disable sans 'd' à la fin).
Tant qu'à faire je propose de prendre en priorité le vrai nom des attributs html, et garder les autres en fallback →
#ENV{required, #ENV{obligatoire}}
etc.Donc ce que je propose, c'est de faire comme ça pour les options communes par exemple :
Avec le filtre correspondant :
Ainsi
'non'
,''
,0
etnull
sont évaluées àfalse
Et toute autre valeur renvoie
true
.(je verrais plus tard pour
disable
car il peut aussi être un array)Pour les changements de nom je sais pas ça dépend. La plupart sont en français par ailleurs, et par ex "obligatoire" n'avait pas de rapport avec un attribut du HTML, c'était avant la diffusion complète du HTML5, c'était un truc fonctionnel et en rapport avec le back et l'ergo : est-ce que c'est interdit d'être vide dans verifier() du CVT + est-ce qu'on ajoute l'indication dans le label, c'est surtout ça plutôt que l'attribut HTML required.
Pour disable en revanche là oui ya aucun sens, d'avoir décidé de mettre en anglais mais pas avec le bon terme directement… je vois pas l'intérêt.
Ouais tout compte fait voyons ça plus tard, un sujet à la fois :)
Est-ce qu'on pourrait écrire un filtre style `
(no testé, juste une idée comme cela)
ah bah desolé, j'avais pas vu ta proposition @tcharlss. Donc on est raccord !
Ya pas des 'On' aussi parfois ?
@JLuc "toute autre valeur renvoie true"
ya que le "non" comme excepption à gérer, le reste c'est plein = true, vide = false comme partout en PHP