fix: réparer l'utilisation des saisies dans un cvt multi étapes avec `#GENERER_SAISIES` #215

Closed
b_b wants to merge 2 commits from issue_214 into master
b_b commented 9 months ago
Collaborator

Fix: #214

Fix: #214
b_b added 1 commit 9 months ago
rastapopoulos reviewed 9 months ago
rastapopoulos left a comment
Owner

questionnement sur le cas qui disparait mais sinon ça a l'air bon

je me demande aussi pourquoi on gère les deux saisies_par_etapes ET _saisies_par_etapes avec et sans _ à chaque fois, pourquoi ya les deux de possibles ?

questionnement sur le cas qui disparait mais sinon ça a l'air bon je me demande aussi pourquoi on gère les deux `saisies_par_etapes` ET `_saisies_par_etapes` avec et sans `_` à chaque fois, pourquoi ya les deux de possibles ?
} elseif (isset($env['_saisies_par_etapes'])) {
$contexte['_saisies'] = $env['_saisies_par_etapes'];
} else {
$contexte['_saisies'] = isset($env['saisies']) ? saisies_lister_par_etapes($env['saisies']) : array();
Owner

Pour ce cas qui disparaitrait, comme tu le disais je sais plus où, est-ce qu'il y aurait un cas légitime où $env['saisies'] serait rempli (par l'API PHP ) mais PAS de "saisies_par_etapes" ? Plutôt une question pour @maieul

Pour ce cas qui disparaitrait, comme tu le disais je sais plus où, est-ce qu'il y aurait un cas légitime où `$env['saisies']` serait rempli (par l'API PHP ) mais PAS de "saisies_par_etapes" ? Plutôt une question pour @maieul
Owner

Là, comme cela, il me semble que cela correspond à ce point de la doc

https://contrib.spip.net/Saisies#Methode-1b-avec-controler-la-structure-globale-du-formulaire-mais-nbsp, lorsqu'une personne envoi _saisies directement dans le contexte, sans passer par la fonction formulaires_xx_saisies, alors _saisies_par_etapes n'est pas automatiquement rempli par SPIP. Cela étant, je pense qu'on pourrait modifier saisies_formulaire_charger pour générer automatiquement _saisies_par_etapes dans ce cas.

Là, comme cela, il me semble que cela correspond à ce point de la doc https://contrib.spip.net/Saisies#Methode-1b-avec-controler-la-structure-globale-du-formulaire-mais-nbsp, lorsqu'une personne envoi `_saisies` directement dans le contexte, sans passer par la fonction `formulaires_xx_saisies`, alors `_saisies_par_etapes` n'est pas automatiquement rempli par SPIP. Cela étant, je pense qu'on pourrait modifier `saisies_formulaire_charger` pour générer automatiquement `_saisies_par_etapes` dans ce cas.
Owner

Est-ce que ça pourrait pas être changé génériquement à cet endroit :
https://git.spip.net/spip-contrib-extensions/saisies/src/branch/master/saisies_pipelines.php#L149

Où on mettrait

if (
	$saisies = saisies_chercher_formulaire()
	or $saisies = $flux['data']['_saisies']
) {

C'est facile et ça marche pour la génération auso des étapes. Mais inversement ça peut être trompeur car ça ne serait pris en compte QUE pour le charger(), et pas pour tous les autres endroits où on va chercher saisies_chercher_formulaire().

Donc on peut aussi dire que ce n'est pas une méthode reconnue et supportée réellement (càd entièrement, pour toutes les fonctionnalités) de remplir le _saisies dans le contexte manuellement. En effet la méthode 1b que tu pointes décris surtout le fait de personnaliser le HTML de l'entourage du formulaire, mais le remplissage devrait toujours se faire par la fonction officielle de déclaration du tableau car sinon ça ne peut pas le reconnaitre pour toutes les autres fonctions (verif auto, afficher_si, etc).

Est-ce que ça pourrait pas être changé génériquement à cet endroit : https://git.spip.net/spip-contrib-extensions/saisies/src/branch/master/saisies_pipelines.php#L149 Où on mettrait ``` php if ( $saisies = saisies_chercher_formulaire(…) or $saisies = $flux['data']['_saisies'] ) { ``` C'est facile et ça marche pour la génération auso des étapes. Mais inversement ça peut être trompeur car ça ne serait pris en compte QUE pour le charger(), et pas pour tous les autres endroits où on va chercher saisies_chercher_formulaire(). Donc on peut aussi dire que ce n'est pas une méthode reconnue et supportée *réellement* (càd entièrement, pour toutes les fonctionnalités) de remplir le `_saisies` dans le contexte manuellement. En effet la méthode 1b que tu pointes décris surtout le fait de personnaliser le HTML de l'entourage du formulaire, mais le remplissage devrait *toujours* se faire par la fonction officielle de déclaration du tableau car sinon ça ne peut pas le reconnaitre pour toutes les autres fonctions (verif auto, afficher_si, etc).
Owner

Est-ce que ça pourrait pas être changé génériquement à cet endroit :

c'est peu ou prou ce que je proposais (mais je l'aurais mis plus bas dans le code, vu qu'on préciement ce pipeline rempli $flux['data']['_saisies'].

C'est facile et ça marche pour la génération auso des étapes. Mais inversement ça peut être trompeur car ça ne serait pris en compte QUE pour le charger(), et pas pour tous les autres endroits où on va chercher saisies_chercher_formulaire()

Je viens de regarder les cas d'appel de saisies_chercher_formulaire. C'est systèmatiquement dans les pipelines de formulaires.

Actuellement il semblerait qu'effectivement les verifs auto ne marchent pas avec une simple déclaration dans _saisies.

Là je suis partagé du coup. On pourrait décider en effet de ne plus supporter que la déclaration via la fonction. Mais on romprait une compat (au moins pour les afficher_si). J'aurais une proposition alternative à faire.

  1. Officiellement effectivement on ne supporterait plus que par la déclaration de fonctions (et donc on corrige la doc en ce sens)
  2. Mais saisies_chercher_formulaire() pourrait aller chercher la valeur dans formulaire_charger la valeur ['_saisies'].
> Est-ce que ça pourrait pas être changé génériquement à cet endroit : c'est peu ou prou ce que je proposais (mais je l'aurais mis plus bas dans le code, vu qu'on préciement ce pipeline rempli `$flux['data']['_saisies']`. > C'est facile et ça marche pour la génération auso des étapes. Mais inversement ça peut être trompeur car ça ne serait pris en compte QUE pour le charger(), et pas pour tous les autres endroits où on va chercher saisies_chercher_formulaire() Je viens de regarder les cas d'appel de `saisies_chercher_formulaire`. C'est systèmatiquement dans les pipelines de formulaires. Actuellement il semblerait qu'effectivement les verifs auto ne marchent pas avec une simple déclaration dans `_saisies`. Là je suis partagé du coup. On pourrait décider en effet de ne plus supporter que la déclaration via la fonction. Mais on romprait une compat (au moins pour les afficher_si). J'aurais une proposition alternative à faire. 1. Officiellement effectivement on ne supporterait plus que par la déclaration de fonctions (et donc on corrige la doc en ce sens) 2. Mais `saisies_chercher_formulaire()` pourrait aller chercher la valeur dans `formulaire_charger` la valeur `['_saisies']`.
Owner

Mais saisies_chercher_formulaire() pourrait aller chercher la valeur dans formulaire_charger la valeur ['_saisies'].

Ça ferait une boucle infinie puisque justement dans charger() on va chercher s'il existe des saisies déclarées avec saisies_chercher_formulaire() pour remplir le "_saisies" :)

> Mais saisies_chercher_formulaire() pourrait aller chercher la valeur dans formulaire_charger la valeur ['_saisies']. Ça ferait une boucle infinie puisque justement dans charger() on va chercher s'il existe des saisies déclarées avec saisies_chercher_formulaire() pour remplir le "_saisies" :)
Owner

Dans le pipeline charger effectivement. Bien vue. Mais on pourrait casser cette boucle avec un static non ?

Dans le pipeline `charger` effectivement. Bien vue. Mais on pourrait casser cette boucle avec un static non ?
Owner

AH bah je viens de tester, cela ne fait pas de boucle infinie en fait, même sans static.

En effet l'appel à saisies_chercher_formulaire()se fait dans le pipeline _charger mais celui n'est pas appelé directement par la fonction _charger.

Cf commit 34a8ec8 (que pour l'heure j'ai mis dans la même branche, mais qu'on pourrait ne pas prendre, c'est juste un POC).

AH bah je viens de tester, cela ne fait pas de boucle infinie en fait, même sans static. En effet l'appel à `saisies_chercher_formulaire()`se fait dans le **pipeline** `_charger` mais celui n'est pas appelé directement par la fonction `_charger`. Cf commit 34a8ec8 (que pour l'heure j'ai mis dans la même branche, mais qu'on pourrait ne pas prendre, c'est juste un POC).
Owner

je me demande aussi pourquoi on gère les deux saisies_par_etapes ET _saisies_par_etapes avec et sans _ à chaque fois, pourquoi ya les deux de possibles ?

Je pense que c'est un facilité que l'on fournit, mais on pourrait décider de ne plus la fournir, car effectivement

  1. Cela alourdit
  2. C'est a priori piégeux, car on peut avoir des échappement indésirables sur les guillemets.
> je me demande aussi pourquoi on gère les deux saisies_par_etapes ET _saisies_par_etapes avec et sans _ à chaque fois, pourquoi ya les deux de possibles ? Je pense que c'est un facilité que l'on fournit, mais on pourrait décider de ne plus la fournir, car effectivement 1. Cela alourdit 2. C'est _a priori_ piégeux, car on peut avoir des échappement indésirables sur les guillemets.
maieul reviewed 8 months ago
}
$saisies_par_etapes = pipeline('saisies_afficher_si_saisies', $saisies_par_etapes);
if ($etape = _request('_etape')) {
if ($etape = _request('_etape') and (_request('saisies_par_etapes') or _request('_saisies_par_etapes'))) {
Owner

Heu, pourquoi cet ajout ? Fort heureusement, on ne passe pas _saisies_par_etapes en request (en tout cas pas dans les cas d'usage standard), car sinon tu imagine la taille du post ? Là ca casse les conditions en multietape avec formidable.

À la rigueur, si tu veux vérifier que c'est bien de l'étape "à la sauce saisies", il faut vérifier si saisies_par_etapes contient une clé etape_1.

Heu, pourquoi cet ajout ? Fort heureusement, on ne passe pas `_saisies_par_etapes` en request (en tout cas pas dans les cas d'usage standard), car sinon tu imagine la taille du post ? Là ca casse les conditions en multietape avec formidable. À la rigueur, si tu veux vérifier que c'est bien de l'étape "à la sauce saisies", il faut vérifier si `saisies_par_etapes` contient une clé `etape_1`.
Owner

Peut-être que c'est juste le $saisies_par_etapes qui précède qu'il faut tester s'il est rempli non ? Càd si l'API a bien reconnu à sa manière les étapes en saisies. Donc

if ($etape = _request('_etape') and $saisies_par_etapes) {
Peut-être que c'est juste le `$saisies_par_etapes` qui précède qu'il faut tester s'il est rempli non ? Càd si l'API a bien reconnu à sa manière les étapes *en saisies*. Donc ``` php if ($etape = _request('_etape') and $saisies_par_etapes) { ```
b_b commented 8 months ago
Poster
Collaborator

J'ai testé la proposition de @rastapopoulos elle ne fonctionne pas.

@maieul sans cet ajout les champs conditionnés par afficher_si sont toujours masqués.

J'ai testé la proposition de @rastapopoulos elle ne fonctionne pas. @maieul sans cet ajout les champs conditionnés par afficher_si sont toujours masqués.
b_b commented 8 months ago
Poster
Collaborator

Proposition amendée comme le préconise @maieul, dites mois si ça ne casse rien dans le cas d'usage de formidable (pour mon cas c'est bon).

Proposition amendée comme le préconise @maieul, dites mois si ça ne casse rien dans le cas d'usage de formidable (pour mon cas c'est bon).
Owner

Yep, c'est bon pour moi @b_b. Merci !

@rastapopoulos le nom de la variable est un peu trompeur. Le nom exacte serait $saisies_par_etapes_si_en_multi_ou_pas_par_etape_si_en_mono. En gros on envoie les saisies classés par étapes si multiétapes (et dans ce cas là, par définition on a au moins etape_1 comme clé, ou en bloc si en mono.

Yep, c'est bon pour moi @b_b. Merci ! @rastapopoulos le nom de la variable est un peu trompeur. Le nom exacte serait `$saisies_par_etapes_si_en_multi_ou_pas_par_etape_si_en_mono`. En gros on envoie les saisies classés par étapes si multiétapes (et dans ce cas là, par définition on a _au moins_ `etape_1` comme clé, ou en bloc si en mono.

Je pense que c'est un facilité que l'on fournit, mais on pourrait décider de ne plus la fournir, car effectivement

Que l'on fournit à qui ? :)

Car à priori c'est un tableau d'usage interne, càd que c'est nous-mêmes qui le générons à une étape précédente du CVT, pour l'utiliser un peu plus loin dans le temps. Du coup vu que c'est nous qui le générons, bah on contrôle tout, ya donc pas à gérer plusieurs possibilités, il me semble. Donc oui toujours avec underscore pour être sûr que ce soit pas modifié (de toute façon seules les vraies valeurs des champs devraient être sans underscore, et toute autre variable doit l'avoir, c'est la règle normalement).

> Je pense que c'est un facilité que l'on fournit, mais on pourrait décider de ne plus la fournir, car effectivement Que l'on fournit *à qui* ? :) Car à priori c'est un tableau d'usage *interne*, càd que c'est nous-mêmes qui le générons à une étape précédente du CVT, pour l'utiliser un peu plus loin dans le temps. Du coup vu que c'est nous qui le générons, bah on contrôle tout, ya donc pas à gérer plusieurs possibilités, il me semble. Donc oui toujours avec underscore pour être sûr que ce soit pas modifié (de toute façon *seules* les vraies valeurs des champs devraient être sans underscore, et *toute* autre variable doit l'avoir, c'est la règle normalement).
b_b force-pushed issue_214 from a89370d385 to b59cc97da5 8 months ago
rastapopoulos approved these changes 8 months ago
rastapopoulos left a comment
Owner

ok (et faudra sûrement virer "saisies_par_etapes" sans underscore plus tard donc)

ok (et faudra sûrement virer "saisies_par_etapes" sans underscore plus tard donc)
Owner

Que l'on fournit à qui ? :)

Tu pointe juste. En fait je pense que j'avais mis cela dans le ticket fae06ec197 suite à une discussion qu'on aurait eu. Mais je ne me rappelle plus exactement.

Bon après ce ne me parait pas rhédibitoire. Donc je pense que l'on peut laisser ca là, quitte à se dire qu'on cassera cela plus tard ? Et surtout on documente que la seule fonctionnalité vraiment supporté c'est via formulaires_xxx_saisies et qu'après saisies s'occupe de tout ?

> Que l'on fournit à qui ? :) Tu pointe juste. En fait je pense que j'avais mis cela dans le ticket fae06ec197158fcc0b45fda064acaff32ff9a32d suite à une discussion qu'on aurait eu. Mais je ne me rappelle plus exactement. Bon après ce ne me parait pas rhédibitoire. Donc je pense que l'on peut laisser ca là, quitte à se dire qu'on cassera cela plus tard ? Et surtout on documente que la seule fonctionnalité vraiment supporté c'est via `formulaires_xxx_saisies` et qu'après saisies s'occupe de tout ?
maieul added 1 commit 8 months ago
ed541854b7 add: `saisies_chercher_formulaire()` peut rechercher `_saisies` dans la
maieul force-pushed issue_214 from ed541854b7 to 34a8ec8741 8 months ago
Poster
Collaborator

Heu @maieul c'est quoi ce force push avec des morceaux de var_dump dedans ? ^^

Je te laisse remettre au propre et merger si ça vous convient bien à tous les deux :)

Heu @maieul c'est quoi ce force push avec des morceaux de var_dump dedans ? ^^ Je te laisse remettre au propre et merger si ça vous convient bien à tous les deux :)
maieul force-pushed issue_214 from 34a8ec8741 to eb210ad1d9 8 months ago
Owner

Le force, c'est parce que j'avais envoyé une erreur sur mon commit, le var_dump c'est parce que j'étais fatigué.

Bref c'est corrigé. J'attend les retours de @rastapopoulos sur ce nouveau commit eb210ad

Le force, c'est parce que j'avais envoyé une erreur sur mon commit, le var_dump c'est parce que j'étais fatigué. Bref c'est corrigé. J'attend les retours de @rastapopoulos sur ce nouveau commit eb210ad

@maieul oui ça a l'air ok, après si c'est dans la même PR, il faudrait donc faire en parallèle le OR que je mettais ici : #215

@maieul oui ça a l'air ok, après si c'est dans la même PR, il faudrait donc faire en parallèle le OR que je mettais ici : https://git.spip.net/spip-contrib-extensions/saisies/pulls/215#issuecomment-39137
Poster
Collaborator

On en est où sur cette PR ? Le patch original fixe le bug cité en objet mais il semble qu'on est bloqué sur le merge car un autre patch s'y est glissé...

On en est où sur cette PR ? Le patch original fixe le bug cité en objet mais il semble qu'on est bloqué sur le merge car un autre patch s'y est glissé...
Owner

@rastapopoulos je suis pas sur de comprendre à quoi tu pense exactement. Précisement mon commit supplémentaire visait à éviter de faire ce or pour pouvoir chercher _saisies directement via saisies_chercher_formulaire()

@b_b pas tout à fait, le contenu supplémentaire que j'ai ajouté vise notamment à éviter une potentiel rupture de compat liée tes modifs.

@rastapopoulos je suis pas sur de comprendre à quoi tu pense exactement. Précisement mon commit supplémentaire visait à éviter de faire ce `or` pour pouvoir chercher `_saisies` directement via `saisies_chercher_formulaire()` @b_b pas tout à fait, le contenu supplémentaire que j'ai ajouté vise notamment à éviter une potentiel rupture de compat liée tes modifs.
Poster
Collaborator

@b_b pas tout à fait, le contenu supplémentaire que j'ai ajouté vise notamment à éviter une potentiel rupture de compat liée tes modifs.

Ok, je vous laisse voir quand ça sera bon pour le merge alors :)

> @b_b pas tout à fait, le contenu supplémentaire que j'ai ajouté vise notamment à éviter une potentiel rupture de compat liée tes modifs. Ok, je vous laisse voir quand ça sera bon pour le merge alors :)
Poster
Collaborator

Des nouvelles ?

Des nouvelles ?
Owner

Pour moi c'est bon, mais j'attend une conformation definitive de @rastapopoulos

Pour moi c'est bon, mais j'attend une conformation definitive de @rastapopoulos

Oui ça a l'air ok.

Juste pour ta remarque "que dans les pipelines", non chercher_formulaire est aussi appelée ailleurs parfois :)
https://git.spip.net/spip-contrib-extensions/profils/src/branch/master/inc/profils.php#L155

Oui ça a l'air ok. Juste pour ta remarque "que dans les pipelines", non chercher_formulaire est aussi appelée ailleurs parfois :) https://git.spip.net/spip-contrib-extensions/profils/src/branch/master/inc/profils.php#L155
erational approved these changes 7 months ago
maieul closed this pull request 6 months ago
Owner

Voilà ca été fusionné. Pour la release, je fais un tour des PR / tickets en attente, et s'il y a des choses simples, je les propose, sinon on releasera rapidement.

Voilà ca été fusionné. Pour la release, je fais un tour des PR / tickets en attente, et s'il y a des choses simples, je les propose, sinon on releasera rapidement.
Poster
Collaborator

At last \o/

At last \o/
Poster
Collaborator

Reste la question d'un éventuel report dans la branche 3, je ne suis pas certain, vous en pensez quoi ?

Reste la question d'un éventuel report dans la branche 3, je ne suis pas certain, vous en pensez quoi ?
Owner

Je pense que tant que la branche SPIP est encore officiellement maintenu, les reports de fix, s'ils ne sont pas trop galère, sont les bienvenus.

Je pense que tant que la branche SPIP est encore officiellement maintenu, les reports de fix, s'ils ne sont pas trop galère, sont les bienvenus.
Poster
Collaborator

'k, je cherry-pick c970a2546c dans la branche v3 alors :)

'k, je cherry-pick c970a2546c328bf2d96ac5a5ce338fa8cfe828e7 dans la branche v3 alors :)
Owner

le suivant aussi (eb210ad1d9), sinon tu risque de casser des choses :)

le suivant aussi (eb210ad1d909b283fedec16693bd124835769795), sinon tu risque de casser des choses :)
Poster
Collaborator

Je viens de le faire, sauf que $saisies = $retour_charger['_saisies'] ?? []; va poser problème en 3.2 (compat PHP 5.6).

Je viens de le faire, sauf que `$saisies = $retour_charger['_saisies'] ?? [];` va poser problème en 3.2 (compat PHP 5.6).
Poster
Collaborator
J'ai donc adapté avec https://git.spip.net/spip-contrib-extensions/saisies/commit/fadaaab0
Owner

top merci. Pour moi c'est bon.

top merci. Pour moi c'est bon.

Et bien cette PR fusionnée pète tous les SPIP, 3 et 4, qui ont mis à jour Saisies : cf les multiples retours un peu partout, discuter et com contrib. 😢

La cause est cette nouvelle inclusion des fonctions charger() sur TOUS les formulaires (même ceux qui n'ont pas de fonctions saisies donc), "si jamais" ya "_saisies" dans le retour, et cela dans verifier() donc à un moment où ya pas forcément les mêmes choses chargées que l'appel classique des charger() par la balise FORMULAIRE.

ET à un mauvais code pas assez robuste du core et des plugins-dist, qui utilise test_formulaire_inclus_par_modele() SANS s'assurer que le fichier externe où elle se trouve est bien chargée. Rappel : quand on utilise une fonction qui est dans un autre fichier ailleurs dans SPIP on doit TOUJOURS charger le fichier car ya aucune assurance qu'il soit déjà là (sauf utils ok).

La solution rapide est de charger le PHP de "balise/formulaire_" dans Saisies et report.
La vraie solution c'est que le core et plugins-dist charge ce fichier eux-mêmes au moment d'utiliser une fonction qui est dedans !

Et bien cette PR fusionnée pète tous les SPIP, 3 et 4, qui ont mis à jour Saisies : cf les multiples retours un peu partout, discuter et com contrib. 😢 La cause est cette nouvelle inclusion des fonctions charger() sur TOUS les formulaires (même ceux qui n'ont pas de fonctions saisies donc), "si jamais" ya "_saisies" dans le retour, et cela dans verifier() donc à un moment où ya pas forcément les mêmes choses chargées que l'appel classique des charger() par la balise FORMULAIRE. ET à un mauvais code pas assez robuste du core et des plugins-dist, qui utilise test_formulaire_inclus_par_modele() SANS s'assurer que le fichier externe où elle se trouve est bien chargée. Rappel : quand on utilise une fonction qui est dans un autre fichier ailleurs dans SPIP on doit TOUJOURS charger le fichier car ya aucune assurance qu'il soit déjà là (sauf utils ok). La solution rapide est de charger le PHP de "balise/formulaire_" dans Saisies et report. La vraie solution c'est que le core et plugins-dist charge ce fichier eux-mêmes au moment d'utiliser une fonction qui est dedans !

Moi j'ai juste lu et commenté le code avec ce qui me sautait au yeux, mais je me demande du coup comment ça a pu marcher pour ceux qui ont testé la PR dans un site. Comment t'as pas pu avoir aussi ces Fatal error @maieul que rapportent tout le monde ?

Moi j'ai juste lu et commenté le code avec ce qui me sautait au yeux, mais je me demande du coup comment ça a pu marcher pour ceux qui ont testé la PR dans un site. Comment t'as pas pu avoir aussi ces Fatal error @maieul que rapportent tout le monde ?
Owner

Bah parce que cela ne se produit pas dans tout les formulaires : je l'ai sur les sites, mais pas sur les articles par ex.

Bah parce que cela ne se produit pas dans tout les formulaires : je l'ai sur les sites, mais pas sur les articles par ex.

Certains disent qu'ils l'ont dans la modif d'article et d'autres encore dans la modif de documents (en SPIP 3.2 ceux là)

Certains disent qu'ils l'ont dans la modif d'article et d'autres encore dans la modif de documents (en SPIP 3.2 ceux là)
Collaborator

Bonjour, je viens de mettre mes sites à jour et je rencontre le même problème.
Je le constate sur la modification des rubriques, articles, événements et documents. Testé sous SPIP 3.2.16.

Bonjour, je viens de mettre mes sites à jour et je rencontre le même problème. Je le constate sur la modification des rubriques, articles, événements et documents. Testé sous SPIP 3.2.16.
Owner

Vu de loin cet appel systématique à charger(), pour tous les formulaires, depuis une fonction elle même appelée depuis le pipeline verifier() est une très mauvaise idée, qui potentiellement casse des workflow de formulaires

Conventionnellement charger() est appelé avant l'affichage du formulaire, pour préparer les valeurs qui seront affichées, et personne ne s'attend à ce qu'il soit sauvagement appelé pendant le verifier() et avant le traiter().

on y fait parfois un set_request('truc') ou d'autres trucs qui vont poser problème et créer des bugs. Que saisies fasse de la bouillie avec les formulaires qui utilisent saisies passe encore, mais que le plugin te foire le workflow de tous les formulaires qui ont rien demandé c'est fort de café.

Il faut revert cet appel. (Quitte à être strict et que seuls les formulaires qui déclarent une fonction _saisie soient pris en charge si c'est ça l'enjeu)

Vu de loin cet appel systématique à `charger()`, pour *tous* les formulaires, depuis une fonction elle même appelée depuis le pipeline `verifier()` est une très mauvaise idée, qui potentiellement casse des workflow de formulaires Conventionnellement `charger()` est appelé avant l'affichage du formulaire, pour préparer les valeurs qui seront affichées, et personne ne s'attend à ce qu'il soit sauvagement appelé pendant le `verifier()` et avant le `traiter()`. on y fait parfois un `set_request('truc')` ou d'autres trucs qui vont poser problème et créer des bugs. Que saisies fasse de la bouillie avec les formulaires qui utilisent saisies passe encore, mais que le plugin te foire le workflow de tous les formulaires qui ont rien demandé c'est fort de café. Il faut revert cet appel. (Quitte à être strict et que seuls les formulaires qui déclarent une fonction `_saisie` soient pris en charge si c'est ça l'enjeu)
Owner

Quitte à être strict et que seuls les formulaires qui déclarent une fonction _saisie soient pris en charge si c'est ça l'enjeu

c'est effectivement cela l'enjeu. Ou plus exactement l'enjeu était : ne pas casser avec le commit de b_b les quelques formulaires qui remplissent _saisies a la place de passer par la fonction formulaire_saisie.

Mais c'est sans doute un cas marginale. On peut décider effectivement de revenir dessus, en se disant que l'enjeu est plutot faible.

> Quitte à être strict et que seuls les formulaires qui déclarent une fonction _saisie soient pris en charge si c'est ça l'enjeu c'est effectivement cela l'enjeu. Ou plus exactement l'enjeu était : ne pas casser avec le commit de b_b les quelques formulaires qui remplissent `_saisies` a la place de passer par la fonction `formulaire_saisie`. Mais c'est sans doute un cas marginale. On peut décider effectivement de revenir dessus, en se disant que l'enjeu est plutot faible.

Moi je suis plutôt pour que seuls les formulaires qui ont une fonction saisies() soient reconnus.

Après si des gens veulent intégrer les liste de saisies différentes et cela à plusieurs endroits différents d'un même formulaire, càd plusieurs #GENERER_SAISIES différents, bah là faudra trouver une autre solution (cas possible suivant le cas de @b_b : aller chercher les champs extras de l'objet A pour l'insérer à tel endroit du form, et les champs extras de l'objet B à un autre endroit du même form).

Moi je suis plutôt pour que seuls les formulaires qui ont une fonction saisies() soient reconnus. Après si des gens veulent intégrer les liste de saisies *différentes* et cela *à plusieurs endroits différents* d'un même formulaire, càd plusieurs `#GENERER_SAISIES` différents, bah là faudra trouver une autre solution (cas possible suivant le cas de @b_b : aller chercher les champs extras de l'objet A pour l'insérer à tel endroit du form, et les champs extras de l'objet B à un autre endroit du même form).
Owner

@rastapopoulos alors on reverte le commit (ca me va) en assumant une potentielle micro rupture de compat ? J'ai besoin d'un oui clair et écrit, parce que j'ai pas envie de me faire engueuler à nouveau après coup.

@rastapopoulos alors on reverte le commit (ca me va) en assumant une potentielle micro rupture de compat ? J'ai besoin d'un oui clair et écrit, parce que j'ai pas envie de me faire engueuler à nouveau après coup.
Owner

si des gens veulent intégrer les liste de saisies différentes et cela à plusieurs endroits différents d'un même formulaire, càd plusieurs #GENERER_SAISIES différents

Pour référence c'est le cas dans une des branches de dev de la fabrique (celle qui génère des formulaires avec saisies php).
Pas par choix, obligé de faire comme ça pour l'instant.

Bon après c'est peut-être l'occasion de le refaire tout en saisies php, sans jquery ui et tout.

Pour revenir sur saisies, si gérer plutôt #GENERER_SAISIES dans un même formulaire se révèle trop compliqué et lourd à gérer, ça me semblerait pas innoportun d'arrêter ce support.

> si des gens veulent intégrer les liste de saisies différentes et cela à plusieurs endroits différents d'un même formulaire, càd plusieurs #GENERER_SAISIES différents Pour référence c'est le cas dans une des branches de dev de la fabrique (celle qui génère des formulaires avec saisies php). Pas par choix, obligé de faire comme ça pour l'instant. Bon après c'est peut-être l'occasion de le refaire tout en saisies php, sans jquery ui et tout. Pour revenir sur saisies, si gérer plutôt #GENERER_SAISIES dans un même formulaire se révèle trop compliqué et lourd à gérer, ça me semblerait pas innoportun d'arrêter ce support.

Reviewers

rastapopoulos approved these changes 8 months ago
erational approved these changes 7 months ago
This pull request cannot be reopened because the branch was deleted.
Sign in to join this conversation.
No Milestone
No Assignees
7 Participants
Notifications
Due Date

No due date set.

Dependencies

This pull request currently doesn't have any dependencies.

Loading…
There is no content yet.