Créer un bouton pour appeler une action avec des paramètres. Importer la librairie commune:
from ead2.backend.actions.lib.widgets import ajax
Construction d’un appel ajax depuis une classe Action:
href = ajax.call(self.server_nb, self.name, container='div_container_retour', option1='1', 'option2'='2')
Cette fonction:
Nous avons désormais un lien javascript permettant d’appeler notre action. Pour la création du bouton consultez:
Note
Paramètres: |
|
---|
Pour récupérer l’appel de ce bouton, il faut d’abord que les options option1 et option2 soient autorisées. Dans l’entête de notre classe Action:
request = Dict(default={}, doc="arguments de la requete en cours cote frontend",
keys=['server', 'action', 'option1', 'option2'])
Récupération dans l’Action de nom self.name, dans la méthode execute de notre Action:
def execute(self):
params, self.server_nb = tools.get_request(self.request)
if params.has_key('option1') and params.has_key('option2'):
option1 = params['option1'][0]
option2 = params['option2'][0]
return self.send_frag({'message':'Appel ajax avec pour option option1: %s, et option2: %s' % (option1, option2)})
Dans le template de retour on pourra afficher notre message:
#if $is_defined('message'):
<h1>$message</h1>
#end if
Dans l’Ead2, les validation de formulaire se font par ajax, nous n’utilisons pas du tout la méthode submit, les boutons de validations sont donc des liens (balise html a)
Importer la librairie commune:
from ead2.backend.actions.lib.widgets import ajax
Récupérer le numéro de serveur:
def execute(self):
params, self.server_nb = tools.get_request(self.request)
Construction du lien pour la validation et le passage en xmlhttp, dans la méthode execute d’une classe Action:
href = ajax.valid(self.server_nb, self.name, ['monformulaire1', 'monformulaire2'], container='div_valid_message')
Vous avez alors un lien javascript qui va valider les formulaires monformulaire1 et monformulaire2, et envoyer le résultat en Ajax à l’action self.name du server numéro self.server_nb de l’agrégateur
Vous pouvez ensuite construire un bouton avec le lien que vous venez de créer, conultez: Boutons
Note
Paramètres: |
|
---|
Dans l’entête de votre fichier importer les outils de formatage de formulaire:
from ead.backend.actions import tools
Dans l’entête de la classe Action, il va falloir autoriser les formulaire monformulaire1 et monformulaire2:
form_result = Dict(default={}, doc='retour de formulaire', keys=['monformulaire1', 'monformulaire2'])
La balise self.form_result de votre action contient désormais les données des formulaires validés. Formatons les données du formulaire validé:
formulaire1 = tools.format_form_result(self.form_result['monformulaire1'])
formulaire2 = tools.format_form_result(self.form_result['monformulaire2'], check=True)
Les résultats formulaire1 et formulaire2 sont des dictionnaires de couple {clé:valeur} ou clé est l’attribut name de la balise et value l’attribut value. Ils sont encodés dans le bon encodage et les valeurs ‘true’ ou ‘false’ sont transformés en True et False.
Pour une balise select avec l’option multi activée, les options sont renvoyées sous forme de liste.
Note
L’option check permet de spécifier comment on désire recevoir les checkboxs et radio dans notre formulaire validé, elle peut prendre les valeurs:
Cela paraît un peu compliqué mais permet de nombreuses manipulations, la valeur par défaut convient dans 90% des cas. Pour les autres balises du formulaire l’option check ne change rien.