Une question: comment faudrait-il faire pour créer un traitement spécifique après la soumission d’un formulaire Formidable ? pour faire court, il s’agirait de décrémenter une sorte de stock d’une sorte de produit, produit qui a été créé avec La Fabrique avec un champ « stock ». Une saisie spéciale a été créée qui liste les produits en question avec leur stock, le visiteur choisit un ou 2 produits avec une quantité, on souhaite juste décrémenter le stock du produit. Il n’y a pas de paiement, juste stockage en base,
L’idée était d’éviter un panier et de faire très simple, tout est en place et fonctionne tiptop, on veut juste améliorer avec une « gestion » de stock (entre guillemets car ça ne gérera pas l’accès concurrentiel à des mêmes produits par 2 internautes simultanément, pas de notion de réservation temporaire, pas de panier, …).
J’imagine que je peux décortiquer des plugins qui font ce genre de choses (Paiement me vient à l’esprit) mais il y a peut-être une ressource cachée dans wiki qui donne les bases de démarrage … si une bonne âme a une piste !
Une question additionnelle. On regarde tous les traitements fait par Formidable dans le gros fichier traiter/enregistrement.php. On se demande comment il faut nommer à la fois le fichier et la fonction à écrire si l’on souhaite que notre traitement complète ceux de Formidable sans avoir à modifier ce fichier.
Par ex si notre formulaire s’appelle « resa », on nomme le fichier squelettes/traiter/resa.php ? ou squelettes/traiter/formulaire_resa.php ? la fonction un truc genre traiter_resa() ? Pour l’instant on a dupliqué le traiter/enregistrement.php dans squelettes/traiter/enregistrement.php et on arrive effectivement à faire des choses, mais on voudrait que notre traitement complète celui de base sans altérer le fichier en question pour continuer à bénéficier des futures maj.
Le nom n’a aucun rapport avec tes formulaires, les traitements c’est pour n’importe quel formulaire.
C’est pas propre à formidable, c’est chargé avec la fonction centrale de SPIP charger_fonction() donc ça utilise son fonctionnement de base. Mais donc en copiant la nomenclature des fonction existante bah ça fera pareil. traiter/truc.php => function traiter_truc_dist(…)
Et le yaml de description. Faut juste vraiment copier pareil, mais avec ton identifiant à toi.
Ok les choses s’éclaircissent peu à peu dans mon esprit, nouvelles questions. J’ai lu la doc de charger_fonction().
ok on crée un squelettes/traiter/stock.php
dedans on met notre fonction traiter_stock_dist()
le charger_fonction() va trouver ça automatiquement parce que c’est dans /traiter ? ou on doit nous même appeler charger_fonction() pour charger notre fonction, et dans ce cas depuis … mes_fonctions.php par ex. ? (car en l’état notre fonction traiter_stock_dist() ne surcharge pas une fonction existante
si l’on n’a aucun réglage, rien dans l’interface privée, le yaml est-il obligatoire ? on a créé un stock.yaml quasi vide pour voir qui nous affiche bien une case à cocher avec « gestion des stocks » en bas des traitements mais le traitement ne s’enregistre pas (la case est décochée quand on revient dessus), je suppose qu’il y a une action à faire quelque part. On étudie aussi FormidablePaiement mais j’ai l’impression qu’il nous manque une brique.
Je cherchais de la doc pour faire ce genre de chose, je ne sais pas s’il y a quelque part une description de l’architecture de traitement.
Bonjour,
Désolé pour la réponse tardive, j’ai malheureusement été diagnostiqué de la maladie que l’on ne nomme plus, ce qui a un peu chamboulé mon emploi du temps de ces 5 derniers jours, ça va mieux je commence à reprendre le flambeau.
Tu souhaites le yaml du formulaire Formidable ou celui de la fonction dans traiter/, donc stock.yaml dans l’exemple qui nous intéresse ? ou les 2 ?
Merci par avance pour l’aide apportée !
Pierre.
On a progressé sur ce front avec ce yaml qui permet maintenant d’enregistrer le traitement (enregistrer = pouvoir valider le traitement sur un formulaire Formidable et que cette validation soit pérenne):
titre: 'Gérer les stocks'
description: 'Gérer les stocks'
options:
-
saisie: 'explication'
options:
texte: 'Décrémente stock après enregistrement base'
-
saisie: 'textarea'
options:
nom: 'message'
label: 'Message après modification des stocks'
rows: 4
Si on enlève le dernier segment à partir du dernier « - » ça ne marche plus, le traitement ne s’enregistre pas comme appliqué au formulaire, pourtant nous n’avons pas besoin de ce textarea (pompé des traitements de Paiement, c’est là que se trouve un message de retour en cas de succès de paiement), j’imagine qu’on peut le laisser là, ça ne porte pas à conséquence … mais je me demandais s’il y avait quelque chose à faire pour ne pas être obligé de mettre ce segment.
Pierre
je viens de regarder le code ;
théoriquement on pourrait ne pas mettre d’options dans un traitement, mais cela complexefierai le code pour un usage somme toute assez marginale ;
je te suggère plutot de mettre dans ton tableau d’option une saisie hidden ; elle sera donc validée par le formulaire, mais invisible pour les gens…
Oui c’était bien ça, on a mis un hidden à la fin ce qui nous a permis d’enregistrer ce traitement et ensuite de faire notre petit traitement de gestion de stock, merci !