Stocker les formulaires Web Drupal 7 dans le code

8

Je me demande s'il existe une solution pour stocker des formulaires Web dans du code. Pour que vous puissiez facilement les dupliquer sur d'autres sites et les regrouper avec vos propres modules. Je cherche quelque chose de similaire en tant qu'API de vues.

S'il n'est pas disponible, combien de personnes sont intéressées par une telle fonctionnalité? Je pourrais développer un module qui pourrait gérer le stockage de formulaires Web dans Code. Et avez-vous des inquiétudes concernant la création d'un tel module?

Merci, Jaap

Jaap Jansma
la source
Vous voulez dire les formulaires créés avec le module Webform?
Mołot
1
Oui, je veux dire les formulaires créés avec le module webform
Jaap Jansma
1
En fait, c'est très simple, il suffit de voir comment le partage Webform le fait. ( webform_share_export()et webform_share_node_insert()sont les fonctions monétaires). Je ne peux pas dire que j'approuve l'utilisation de eval(), mais vous pouvez tout aussi facilement le convertir pour utiliser un objet JSON / une chaîne sérialisée à la place. La seule (petite) difficulté que vous devez surmonter est de savoir comment / quand votre formulaire Web est appliqué à un nouveau nœud, un nœud étant bien sûr nécessaire pour attacher le formulaire Web.
Clive

Réponses:

1

Pas vraiment, et ce n'est pas nécessaire

  1. Si vous avez besoin d'un formulaire disponible à partir du code, les formulaires API de formulaire ne sont pas si difficiles à écrire à partir de zéro. Contrairement aux vues, vous ne pouvez thématiser les formulaires Web que sur leur ID de nœud, et cela changerait de site en site, les formulaires Web fournis avec le module ne seront donc pas pratiques.

  2. Si vous souhaitez regrouper des formulaires avec vos modules, et pour une raison quelconque, vous ne pouvez pas utiliser l'API Form, l' intégration des fonctionnalités UUID et le partage Webform fournissent des moyens de le faire. Ce ne sera pas un code au sens propre, mais cela devrait fonctionner.

  3. Il est relativement facile à utiliser hook_form_alterpour obtenir une représentation API de formulaire d'un formulaire Web particulier. Bien sûr, vous ne pourrez pas le changer facilement à l'avenir, mais encore une fois, contrairement aux vues, c'est bien. Le module n'est pas blessé si certaines données ne sont pas affichées. Les données non fournies, ou fournies d'une manière que le module ne prévoit pas, peuvent casser les choses. Donc, si le module a besoin d'un formulaire, il ne devrait pas être facile de le modifier . Les modifications apportées au formulaire nécessiteraient de toute façon des modifications du code du module, de sorte que le code API du formulaire facilite les choses, pas plus difficiles à long terme, dans de telles situations.

Mołot
la source
1
Bien que ce soit une bonne réponse pour l'alternative, je pense que vouloir garder les formulaires Web dans le code est une demande assez raisonnable (je ne suis pas d'accord pour dire que ce n'est pas nécessaire ou que ce n'est pas vraiment possible). Par exemple, si vous souhaitez fournir un formulaire de contact de base avec un module qui peut ensuite être étendu par les utilisateurs via l'interface utilisateur, un formulaire Web serait idéal. Construire cette interface utilisateur vous-même serait une vraie douleur. Étant donné que l' webformobjet (ou le tableau?) Se trouve de toute façon sur l'objet nœud, il peut être sérialisé et ré-appliqué très facilement
Clive
@Clive Mais pour un contact basique, pourquoi quelqu'un aurait-il besoin d'un vrai code? Pourquoi le nœud exporté (avec l'intégration des fonctionnalités UUID, vous pouvez exporter le nœud vers le module) ne suffirait-il pas?
Mołot
Ce module synchronise-t-il également l'objet Webform?
Clive
@Clive Pour autant que je m'en souvienne, avec quelques problèmes mais oui. Oh, et si le code personnalisé a besoin de données à partir d'un formulaire, le rendre Webform ne serait-il pas dangereux? Je ne connais aucun moyen de rendre les champs résistants à la suppression dans Webform (mais j'avoue que je n'ai pas regardé si fort).
Mołot
1
En effet, il existe même un correctif pour le formulaire Web pour faire fonctionner l'intégration. Je le reprends :)
Clive