Bonjour,
J’ai une saisie (inspirée de checkbox.html) qui me retourne des erreurs:
Erreur d’exécution squelettes/saisies/checkbox_mots.html | File […]/ecrire/public/composer.php(94) : eval()'d code Line 68 : in_array(): Argument #2 ($haystack) must be of type array, null given
Je pense que c’est suite à la dernière mise à jour de saisies/formidable …
Je ne me souviens plus exactement de la raison pour laquelle on avait créé cette saisie …
Mais bon il me semble que j’ai déjà vu passer ce problème sur Discuter, mais je ne retrouve pas … on dirait un souci d’initialisation (un array pas initialisé qui retourne cette erreur), si je redescend de PHP8.1 en 7.4 je ne l’ai plus …
J’ai une saisie (inspirée de checkbox.html) qui me retourne des erreurs:
il vaudrait mieux dans l’idéal faire une saisie héritée qu’une saisie inspirée
Je pense que c’est suite à la dernière mise à jour de saisies/formidable …
faudrait vérifier en remettant une version ancienne, mais pour autant que je me souvienne, on n’a pas changé. Et pour autant que je puisse voir la saisie checkbox fonctionne toujours
on dirait un souci d’initialisation (un array pas initialisé qui retourne cette erreur), si je redescend de PHP8.1 en 7.4 je ne l’ai plus …
oui, c’et bien cela. tu n’a ni #ENV{valeur_forcee}, ni #GET{valeur}, ni #GET{defaut}. Tu aurais le code complet de ta saisie pour regarder plus en détails ?
Bonjour,
Ok merci pour ce retour détaillé, je vais devoir m’y pencher pour comprendre ce que la personne souhaitait faire et changer ce qui doit être changé
Je vois que toutes les saisies ont été faites sur ce modèle qui j’imagine n’a pas été inventé par lui, il a dû récupérer ce code quelque part …
je vais devoir m’y pencher pour comprendre ce que la personne souhaitait faire et changer ce qui doit être changé
c’est pas très compliqué à comprendre : elle voulait proposer des mots en checkbox. Et pour changer ce qui doit être changé je te l’ai expliqué et montré la base: il vaut mieux faire de l’héritage de saisies
Je vois que toutes les saisies ont été faites sur ce modèle qui j’imagine n’a pas été inventé par lui, il a dû récupérer ce code quelque part …
oui elle a copier-coller saisies/checkbox.html et adapté
Et d’une ancienne version de checkbox.html car la nouvelle utilise bien la boucle DATA, pas la boucle POUR. Mais je devrai y arriver, faut juste que je trouve une heure pour le faire
Encore merci !
Pierre.
Pour l’instant pas vraiment de succès, j’arrive à afficher les checkboxes et elles ont l’air fonctionnelles mais le label de la checkbox reprends son identifiant, pas le titre prévu … J’ai fait un .yaml pour l’héritage mais je n’ai quasi rien mis dedans, seulement la déclaration d’héritage.
J’ai lu le lien proposé et j’ai essayé plusieurs choses, pour la première j’ai utilisé exactement le code proposé ci-dessus sans rien ajouter, j’ai juste retiré les backquotes autour du qui me semblaient bizarres, (et un autre truc qui me semble bizarre c’est la parenthèse ouvrante devant #ENV, ça me laisse à penser que je ne comprends pas tout car si je l’enlève ça me fait une erreur), donc j’avais finalement un checkbox_mots.html comme suit:
Auquel j’ai adjoint un checkbox_mots.yaml tout simple:
heritage:
parent: 'checkbox'
Le résultat comme je le disais semble fonctionnel mais les labels des checkbox sont maintenant les id des mots correspondants, pas les titres. Et plus d’erreur en PHP8.1.
Ensuite j’ai essayé plusieurs combinaisons entre le code précédent (3ème post) et celui ci-dessus en remplaçant bien sûr la boucle_checkbox POUR par une boucle DATA (ça c’est assez simple) et en utilisant le code ci-dessus en remplacement de la boucle_checkbox_mots.
Quand plus haut je disais qu’il fallait que j’essaye de comprendre ce qu’il avait fait, je voulais en fait dire qu’il fallait que j’essaye de comprendre la raison pour laquelle il n’avait pas utilisé la saisie checkbox de base, j’avais bien vu qu’il s’agissait de checkbox pour des mots …
Je pourrai donner une url mais pour atteindre ce stade il faut être signé dans le site !
Je m’interroge sur ce qu’il faut faire pour déclarer une saisie autonome, s’il faut dans le yaml des enlever_options, modifier_options, ajouter_options (là il faudrait que je pige pourquoi cette saisie différente de la parente …)…
Je ne suis pas super à l’aise dans ces saisies, j’en avais fait autrefois sans du tout cette notion d’héritage, les choses ont évoluées, moi un peu moins
Le résultat comme je le disais semble fonctionnel mais les labels des checkbox sont maintenant les id des mots correspondants, pas les titres. Et plus d’erreur en PHP8.1.
c’est à cause de ton ``` #SET{data, #GET{data}|push{#ID_MOT}}
là tu rempli un tableau avec uniquement des identifiants, donc forcément ca ne peut trouver que... des identifiants :) Ce qu'il faut c'est avoir les identifiants en clé de tableau et les valeurs en libellés. Pour ce faire je t'invite à regarder ici
https://www.spip.net/fr_article4009.html
Je ne suis pas super à l’aise dans ces saisies, j’en avais fait autrefois sans du tout cette notion d’héritage, les choses ont évoluées, moi un peu moins
la notion d’héritage, a laquelle tu n’est pas forcément obligé de souscrire, à l’avantage de permettre d’avoir des saisies cohérentes.
les options_supprmer/ajouter/ etc permettent ensuite d’affiner. Par exemple l’a clairement puisque les cases à cochées sont determinées automatiquement, il ne faut pas qu’on puisse configurer le valeur DATA.
J’ai déjà essayé sans la (, je vais tenter ce matin sans les quotes … oui je trouve ça bizarre, c’est copié-collé de la réponse de Maïeul (c pas un reproche, j’ai constaté ce souci en copiant-collant depuis la doc de Spip, ça reprend parfois les caractères spéciaux de l’éditeur, je suppose que ça vient de là).
Erratum: en fait la parenthèse était là avant, que je l’enlève ou la mette c’est pareil … donc je l’ai enlevée.