Bonjour,
Sur mon application j’utilise des preset search pour afficher des vues. Je voudrais que quand je clique sur Create à partir d’une de ces vues, le filtre appliqué dans ma preset search soit utilisé pour initialiser le champ correspondant du formulaire de création.
J’ai essayé de le faire dans le InitCreate mais le nom de l’instance est le même quel que soit l’endroit d’où je viens.
Comment savoir que je viens d’une vue ? Est-ce que je dois utiliser des paramètres de session ?
Sur une vue l’instance peut être un panel_ajax_xxx ou home_ajax_xxx avec un index en suffixe s’il y en a plusieurs. Si le nom de l’instance ne permet pas d’identifier l’objet, plusieurs idées pour mémoriser le contexte d’usage :
Ajouter un champ caché non persistant dans l’objet et le forcer à une certaine valeur dans chaque preset search. Et regarder la présence d’un filtre sur ce champ à l’initCreate
Ajouter une action “Créer” spécifique (et masquer l’action Créer de base) qui positionne les champs ou un flag sur l’objet (setParameter) et redirige vers la création où le initCreate fera des choses particulières en plus si le flag est présent + retire le flag.
En fait mon problème c’est que dans le initCreate je perds toutes ces informations. Je n’ai plus le nom d’instance de ma vue mais celui du formulaire de création j’ai l’impression. Et tous mes filtres sont vides, celui du champ non persistant aussi.
Oui, il faut bien mettre en mémoire le contexte d’usage ou de navigation depuis l’appelant car une création se fait toujours sur l’instance Main de l’objet (the_ajax_xxx), par contre une bannette de recherche peut être sur une instance dédiée (panel, home, workflow…).
Dans l’instance qui a les informations (ex: dans le preSearch du isHomeInstance), il faut les positionner en variable de session getGrant().setParameter("MYCONTEXT", "blahblah")
C’est aussi le front qui peut faire un appel ajax pour positionner un context app.setSysParam... sur chaque list.onload si en back ce n’est pas possible
Et dans le initCreate du isMainInstance, il faut tester la présence du paramètre de session et forcer des valeurs puis retirer le contexte pour qu’il ne serve qu’une fois par exemple.