J’ai une action front qui ouvre un formulaire d’objet. Le nom de l’objet doit être calculé en fonction de la ligne sur laquelle l’action a été exécutée.
Mon souci est qu’à l’arrivée dans l’action, je n’ai plus que le rowId de la ligne dans les valeurs de l’item donc je ne peux pas calculer ce nom.
Cela a l’air d’être voulu car les valeurs sont explicitements vidées dans doActionCustom
if (rowId) {
obj.item = {};
obj.setRowId(rowId);
Est-ce que je dois faire un get avant le displayForm ? Je trouve ça dommage dans le sens où j’avais déjà récupéré les valeurs en liste, de plus, le displayForm refait un get derrière.
Auriez-vous une autre solution à me suggérer ?
Ce bout de code vide l’item lorsque une action back est appelée juste après, c’est pour forcer un refresh des données (select en base), seul le row_id est nécessaire pour appeler le verbe ajax obj.action(name...).
Dans le cas d’un javascript, l’item est bien forcé avant l’eval via setValues.
Une action javascript:xxx appelle la méthode $ui.loadURL qui va faire un $ui.eval puisque c’est du code, et l’item n’est pas vidé dans ce cas.
// Execute a script
function exec(script,div) {
if (script) {
div = div || ctn;
// Load values to allow obj.getFieldValue
if (p.object && p.item)
p.object.setValues(p.item);
// Isolated script with a local context
$ui.eval(
// local scope variables+alias
`let p=options, obj=p.object, object=obj, rowId=p.rowId, action=p.action;\n${script};`,
["ctn", "div", "options"],
[ctn, div, p]);
}
}
A mon avis il faut utiliser directement p.item, ou obj et rowId ou leurs alias dans ta fonction viewSummary.
On ne voit pas la définition complète dans ta copie d’écran.
D’après ton post la définition c’est URL = javascript:obj.viewSummary().
Si backend = true c’est qu’il y a aussi un nom de méthode back à appeler avant le redirect vers l’URL ?
Oups, elle était en back auparavant, et quand j’ai changé le champ Méthode s’est caché et je ne l’ai pas vidé … j’ai bien mon item, désolée du dérangement et merci !
Ok il faudrait effectivement que Simplicité vide les champs act_method et act_script au validate de l’action de type Front, sinon on obtient des comportements hybrides et étranges, et c’est impossible à voir puisque les champs sont cachés.