Utilisation de la vérificaion de type fichiers pour une saisie personnalisée
#139
Open
opened 1 year ago by paidge
·
6 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
3 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
Problème :
Je veux créer une saisie personnalisée (par ex : /saisies/ma_saisie.html) avec un
input[type=file]
et y adjoindre la vérification de typefichiers
:Dans ce cas, la vérification n'est pas prise en compte.
Solution :
A la ligne 184 du fichier
inc/saisies_request.php
, le plugin vérifie si la saisie concerne un fichier grâce à la fonctionsaisies_saisie_est_fichier($saisie)
. Celle-ci vérifie si il s'agit d'une saisieinput[type=file]
ou d'une saisiefichiers
et renvoie un booléen.Cette fonction devrait en plus vérifier si la VERIFICATION concerne un fichier et non seulement la saisie en elle-même (qui peut être une saisie personnalisée). Pour cela, il faut modifier la ligne 482 du fichier
inc/saisies_lister.php
par :$file = (($saisie['saisie'] == 'input' and isset($saisie['options']['type']) and $saisie['options']['type'] == 'file') or $saisie['saisie'] == 'fichiers' or (isset($saisie['verifier']) and isset($saisie['verifier']['type']) and $saisie['verifier']['type'] == 'fichiers'));
Je suis d'accord que ça ne devrait pas être que telle ou telle saisie précise qui est reconnue comme fichiers en dur. En revanche dans les interfaces de contructeurs (utilisé par Formidable et Champs Extras) on peut mettre une vérification à n'importe quel type de champ, si on assigne cette vérif à un radio ou select, faut pas détecter que c'est un fichier non plus. Et d'ailleurs je vois au passage que la vérification fichiers est aussi liée en dur dans le constructeur, pour n'être sélectionnable que pour la saisie "fichiers" et la virer pour les autres.
Donc juste regarde le type du verifier ne suffit pas il me semble, mais ça ne va pas non plus toutes ces assignations en dur dans le code.
Le moyen le plus rapide à implémenter serait de faire encore un autre pipeline pour déclarer quels sont les saisies "file", tout comme il y a un pipeline pour déclarer les saisies "autonomes", etc. Ça fait encore un pipeline en plus pour gérer des exceptions… Mais c'est le plus rapide à faire en tout cas.
Si le développeur assigne une vérification de type
fichiers
sur sasaisie
, il est sûr que c'est uninput file
et donc je trouve que c'est suffisant.Mais non, relis le message précédent, les saisies et les vérifications, c'est aussi (et même en premier lieu à la base) pour générer les interfaces de contructeur de formulaires (Formidable, Champs Extras…). Donc non n'importe qui peut assigner ça à une saisie en théorie, pas du tout "un dév". (modulo le fait que là c'est bloqué en dur dans le code à telle saisie justement)
Je crois comprendre. N'importe qui peut attribuer une vérification de type
fichiers
sur n'importe quel type desaisie
même de simpleinput
? Alors peut-être que la fonctionsaisies_get_valeur_saisie
de inc/saisies_request.php en plus de ma proposition pourrait devenir :pipeline
saisie_est_fichier
comme on asaisie_est_tabulaire
ousaisies_fichier
comme on asaisies_autonomes
?Tant qu'il n'y a besoin de savoir tout ça qu'après un postage (au moment où on valide les formulaires), alors la solution pourrait être bien plus simple : quand on cherche les vérifs d'un champ "truc", il suffit de regarder avec isset() s'il est dans $FILES. Si c'est le cas, c'est que c'était un fichier. :)
Enfin ya peut-être un soucis pour le test d'obligation, car dans ce cas ya peut être pas FILES['truc'], à tester