Au fil des différents modules, de nombreux écrans de listes (list.php) sont modifiés avec l’apparition de nouvelles colonnes. Parfois, ces colonnes ne proviennent pas de l’objet concerné, et ne sont donc pas sélectionnables dans la liste des colonnes à afficher ou non par la menu hamburger.
J’aurais aimé changé ce comportement pour nos modules, mais je me heurte à une problématique : il n’existe pas de hook permettant de modifier l’array ($arrayfields) utilisée par la fonction multiSelectArrayWithCheckbox() de la classe Form (html.form.class.php).
Y a-t-il une solution que j’aurais loupée pour cela ? Ou bien est-il nécessaire de voir pour intégrer un hook ? Dans ce cas, plutôt dans la fonction multiSelectArrayWithCheckbox(), ou dans le list.php de chaque objet (le boulot !) ?
Je ne pense pas que cet array soit passé, justement. D’autant plus que le doActions n’intervient pas sur la vue, qui est généralement plus bas dans le code.
Oui il y a aussi cette solution, mais j’avais vraiment envie de proposer un truc propre. Le doActions avec l’arrayfields par référence me semble plutôt approprié
je dirais que l’un (envoyer le selectfields dans le doActions) n’empêche pas l’autre (créer un hook dédié pour le modifier)…
une petite remarque supplémentaire : modifier le template list du modulebuilder pour l’ajouter aussi…
Si c’est dans le multiSelectArrayWithCheckbox ce n’est plus un hook qu’il faut écrire mais un trigger
Meme si cela fait plus de travail, j’aurai qd meme une préférence pour le hook afin tout au meme endroit (et ne pas passer des plombes à comprendre comment cela fonctionne…)
Dans la logique dolibarrienne, ce qui touche à l’interface c’est du hook et ce qui se passe dans les fonctions ou les méthodes c’est du trigger
Si je privilégie de créer un hook, bien que ce soit plus conséquent en terme de travail, c’est que coté développeur de module on n’aurait qu’un seul fichier action_xxx.class.php qui contienrait toute le code associé à la modification de la liste…
Ce serait pareil avec un trigger, non ? Sauf que tu l’aurais dans un fichier trigger. Tu gères en fonction de ton contexte. Ou je dis une bêtise ?
Mais oui, un hook me semble tout de même plus adapté, je pensais juste le mettre directement dans la fonction plutôt que dans les listes… Mais c’est effectivement pas cohérent.