Bonjour,
J’ai constaté une différence de comportement sur un plugin que j’ai développé sur les pages article_edit et article.
Apres investigation, cela est du à un probleme de séquencement des appels pipelines.
En effet, les appels ne sont pas effectués dans le même odre lors de l’appel à ces 2 écrans (même si le flux de sortie est, lui, bien ordonné)
Voici un résumé des appels des 2 fonctions :
exec_article_edit_dist()
– article_edit()
– – commencer_page
– – – init_body()
– – – – pipeline : init_body
– pipeline : exec_init()
– pipeline : affiche_gauche()
– pipeline : exec_droite()
– pipeline : exec_milieu()
exec_article_dist()
– pipeline : exec_init()
– article_affiche()
– – pipeline : affiche_gauche()
– – pipeline : exec_droite()
– – pipeline : exec_milieu()
– commencer_page
– – init_body()
– – – pipeline : init_body
on constate que l’ordre d’appel des pipeline n’est pas le même sur ces 2 pages, ce qui dans le cadre de mon plugin, me derange un peu (assignation de variables, inclusions etc…)…
Instinctivement j’aurais plutot imaginé le sequencement suivant qqsoit la page appelée :
pipeline : exec_init()
pipeline : init_body
pipeline : affiche_gauche()
pipeline : exec_droite()
pipeline : exec_milieu()
Y-a-t-il un contrainte qui empêcherait d’uniformiser le séquencement de ces appels ? Dois-je déclarer un bug ?
Olivier Bouin
Live Earth is coming. Learn more about the hottest summer event - only on MSN. Check it out!
O B a écrit :
Bonjour,
J'ai constaté une différence de comportement sur un plugin que j'ai développé sur les pages article_edit et article.
Apres investigation, cela est du à un probleme de séquencement des appels pipelines.
En effet, les appels ne sont pas effectués dans le même odre lors de l'appel à ces 2 écrans (même si le flux de sortie est, lui, bien ordonné)
Voici un résumé des appels des 2 fonctions :
...
on constate que l'ordre d'appel des pipeline n'est pas le même sur ces 2 pages, ce qui dans le cadre de mon plugin, me derange un peu (assignation de variables, inclusions etc...)...
Instinctivement j'aurais plutot imaginé le sequencement suivant qqsoit la page appelée :
pipeline : exec_init()
pipeline : init_body
pipeline : affiche_gauche()
pipeline : exec_droite()
pipeline : exec_milieu()
Y-a-t-il un contrainte qui empêcherait d'uniformiser le séquencement de ces appels ? Dois-je déclarer un bug ?
mmm en toute rigueur, rien ne permet de garantir l'ordre d'appel.
Selon le layout que l'on utilise(ra) dans SPIP, le flux peut commencer par le milieu (contenu) ou par la gauche.
On pourrait a la rigueur supposer que init_body soit appelé avant le reste. Mais en l'etat rien ne l'impose car toutes les fonctions retournent un flux, et il se peut très bien que dans certains cas on calcule la page d'abord, puis le init apres afin d'y glisser les bons scripts.
Donc pas sur que ce soit la un bug, juste une contrainte que l'on a pas jugé utile de mettre et qui pourrait poser autant de problème qu'elle en résoud.
Les pipelines sont supposés par nature indépendants les uns des autres, et auto suffisants (ie ils contiennent dans leur contexte ce qui est necessaire a leur calcul).
Cédric