Je cherche à afficher sur une page du privé un texte retourné par une action spip avec un bouton d’action :
#SET{url_action_afficher_texte,#URL_ACTION_AUTEUR{afficher_texte,"",#SELF}}
#BOUTON_ACTION{
afficher le texte,
#GET{url_action_afficher_texte},
ajax
}
Et pour la fonction de mon action :
function action_afficher_texte_dist() {
// Je fais mes traitements en base, puis ma fonction renvoie des choses que je veux afficher dans le squelette appelant
return ajax_retour("texte","le texte à afficher");
}
Bien sur ici, ça ne fait rien, mais il me semble qu’avec l’argument de callback sur le bouton d’action, je pourrais arriver à mes fins…
Auriez-vous un exemple très simple ou un plugin à me recommander pour voir comment cela fonctionne ?
Si j’ai ajax_retour($contenu); par exemple dans le retour de ma fonction d’action, comment le récupérer dans le squelette appelant (celui ou le bouton d’action a été cliqué) ?
Le callback peut-il d’une manière ou d’une autre permettre de récupérer le return de l’action ?
As tu réussi ?
Si tu as trouvé, ça m’intéresse bien de savoir comment tu fais avec ajax_retour() ou autre « callback ».
Mais sinon, je t’invite à regarder du côté de l’argument redirect de la balise #URL_ACTION_AUTEUR elle même argument de ton #BOUTON_ACTION. À cette url utilisée comme redirect, ne peux-tu passer un argument valant le « texte retourné par l’action spip » que tu veux afficher ? Ainsi la page destination peut afficher ensuite cet argument de la manière qui convient.
Pourtant ce besoin semble assez évident, je suis étonné que cela ne soit pas prévu/explicite.
C’est intéressant ce que tu dis, mais pour pouvoir passer en argument du redirect la valeur retournée par l’action, il faudrait appeler l’action une deuxième fois (d’une autre manière, style via un filtre personnalisé).
Dans mon cas, l’action fait un appel à une API externe qui me renvoie une valeur. Je ne vois pas comment gérer cela sauf s’il était possible de (re)définir la page de redirect directement dans la fonction d’action.
Si tu ne veux pas passer le détail de la valeur entière dans l’url, tu peux, dans l’action, la ranger dans une globale persistante, et aller l’y chercher ensuite dans le squelette de redirect.
Par exemple en utilisant un casier (ou un sous-casier) de config SPIP ce qui donnerait genre :
Si je ne me trompe pas, il n’est pas possible de récupérer une valeur de retour dans un #BOUTON_ACTION.
Quand j’ai besoin de le faire, j’utilise l’url que me donne : #URL_ACTION_AUTEUR que je joue en ajax. comme cela, je peux récupérer en retour la valeur.
Attention, dans ce cas, il faut bien penser à minima, à vérifier les autorisations.
Sinon, l’autre solution, est de passer par un formulaire CVT.
Tu veux dire que tu utilises un lien ajax classique avec <a href="#URL_ACTION_AUTEUR" class="ajax"></a>
?
L’idée de faire un CVT est aussi bien intéressante. Au final, en jouant un peu avec le style, j’imagine qu’on peut assez simplement afficher un équivalent du bouton d’action + une zone pour le retour après le traitement.
je ne pense pas que cela soit une bonne chose de décrire cette méthode dans la gazette. Elle n’est pas très conventionnelle. Je pense qu’elle a plus sa place dans ce forum.