web-dev-qa-db-fra.com

Comment créer un nœud avec les soumissions d'un formulaire Web?

J'utilise Drupal 7 et j'ai créé un type de contenu 'NewArticle' avec les champs 'Title', 'Text' et 'Image'. Les utilisateurs ont la permission de créer un 'NewArticle', mais Je n'aime pas la façon d'afficher la barre d'administration afin de leur permettre de créer un 'NewArticle'.

Au lieu de cela, j'aimerais travailler avec Webforms . Mon objectif est de créer un formulaire Web avec exactement les mêmes champs que le type de contenu 'NewArticle'. Donc, ce que je veux, c'est: lorsque les utilisateurs remplissent le formulaire et le soumettent, un nouveau nœud 'NewArticle' est créé avec les informations soumises.

Comment puis-je faire ceci? Y a-t-il des modules qui rendent cela possible? Je n'en trouve pas ...

6
Jeroen

Au lieu d'utiliser le module Webforms pour créer de nouveaux nœuds, il est préférable de laisser les utilisateurs les créer directement sur MY-SITE/node/add/CONTENT-TYPE. Essayer de pirater les données d'un formulaire Web ne fait que compliquer inutilement les choses. Masquez la barre d'outils pour les autres utilisateurs et donnez-leur la permission d'ajouter du nouveau contenu. Enfin, adaptez le formulaire de nœud à vos besoins avec un fichier modèle et stylisez-le avec CSS.

7
Jeroen

Champs par défaut du formulaire Web Avec ce module, vous pouvez facilement créer une grande partie des nœuds avec les mêmes champs du formulaire Web. Il peut être applicable en cas d'offres d'emploi avec formulaire de réponse, type de contrôle de rétroaction de qualité ou tout ce que votre esprit vous suggère.

Étant donné que vous pouvez créer plusieurs types de contenu compatibles avec le formulaire Web, vous pouvez respectivement attacher différents champs par défaut pour chacun d'eux.

(ou)

Webform report module crée un nouveau nœud sur chaque soumission de formulaire Web. Vous pouvez récupérer les données à l'aide de vues, les personnaliser selon vos besoins.

Ce module permet aux utilisateurs de créer des rapports simples et dynamiques basés sur les données collectées par le module de formulaire Web. Il ajoute un nouveau type de nœud qui contient les critères du rapport et les données affichées sont mises à jour automatiquement lors de la soumission des formulaires Web. Les données peuvent être triées selon la préférence du spectateur sans modifier les critères du rapport.

3
Bala

Y a-t-il des modules qui rendent cela possible?

Oui, vous pouvez utiliser le module Rules pour cela. À titre d'exemple, considérons cette règle (au format d'exportation des règles), qui fait ce que vous demandez:

{ "rules_create_a_node_from_webform_data" : {
    "LABEL" : "Create a node from webform data",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "REQUIRES" : [ "webform_rules", "rules" ],
    "ON" : { "webform_rules_submit" : [] },
    "IF" : [
      { "webform_has_id" : {
          "form_id" : [ "form_id" ],
          "selected_webform" : { "value" : { "webform-client-form-191" : "webform-client-form-191" } }
        }
      }
    ],
    "DO" : [
      { "drupal_message" : { "message" : "The webform submitted contains these fields:\r\n\u003C\/ul\u003E\r\n\u003Cli\u003Ethe field labeled \u0022[data:demoform_title-title]\u0022 which has value \u0022[data:demoform_title-value-raw]\u0022.\u003C\/li\u003E\r\n\u003Cli\u003E the field labeled \u0022[data:demoform_text-title]\u0022 which has value \u0022[data:demoform_text-value-raw]\u0022.\u003C\/li\u003E\r\n\u003Cli\u003E the field labeled \u0022[data:demoform_number-title]\u0022 which has value \u0022[data:demoform_number-value-raw]\u0022.\u003C\/li\u003E\r\n\u003Cli\u003E the field labeled \u0022[data:demoform_option-title]\u0022 which has value \u0022[data:demoform_option-value-raw]\u0022.\u003C\/li\u003E\r\n\u003C\/ul\u003E" } },
      { "variable_add" : {
          "USING" : { "type" : "text", "value" : "[data:demoform_text-value-raw]" },
          "PROVIDE" : { "variable_added" : { "var_demoform_text" : "Form variable text" } }
        }
      },
      { "variable_add" : {
          "USING" : { "type" : "text", "value" : "[data:demoform_number-value-raw]" },
          "PROVIDE" : { "variable_added" : { "var_demoform_number_text" : "Form variable number text" } }
        }
      },
      { "data_convert" : {
          "USING" : { "type" : "integer", "value" : [ "var-demoform-number-text" ] },
          "PROVIDE" : { "conversion_result" : { "var_demoformvar_number" : "Form variable number" } }
        }
      },
      { "variable_add" : {
          "USING" : { "type" : "text", "value" : "[data:demoform_option-value-raw]" },
          "PROVIDE" : { "variable_added" : { "var_demoform_option" : " Form variable option" } }
        }
      },
      { "entity_create" : {
          "USING" : {
            "type" : "node",
            "param_type" : "article",
            "param_title" : "[data:demoform_title-value-raw]",
            "param_author" : [ "user" ]
          },
          "PROVIDE" : { "entity_created" : { "article_created" : "Created article" } }
        }
      },
      { "data_set" : {
          "data" : [ "article-created:body:value" ],
          "value" : [ "var-demoform-text" ]
        }
      },
      { "data_set" : {
          "data" : [ "article-created:field-free-format-nr" ],
          "value" : [ "var-demoformvar-number" ]
        }
      },
      { "data_set" : {
          "data" : [ "article-created:field-optionlist" ],
          "value" : [ "var-demoform-option" ]
        }
      },
      { "data_set" : { "data" : [ "article-created:comment" ], "value" : "0" } },
      { "entity_save" : { "data" : [ "article-created" ], "immediate" : "1" } },
      { "drupal_message" : { "message" : "A new article got created, with nid=[article-created:nid] and url=[article-created:url]" } }
    ]
  }
}

Quiconque connaît un peu les règles et Webform , tout en sachant qu'il est souvent difficile d'avoir accès aux données contenues dans un formulaire Web soumis. Principalement parce qu'ils ne sont pas disponibles pour les sélectionner lors de la création d'actions de règles.

Cependant, en introduisant ces var-demoformvar-... variables (comme dans la règle ci-dessus), vous pouvez activer la magie typique des règles. Reportez-vous à ma réponse à " Comment créer un nœud à partir d'un formulaire Web en utilisant des règles? " pour plus de détails sur tout cela.

0
Pierre.Vriens

Désolé, je n'ai pas pu commenter car je viens de rejoindre.

Mais en plus de la réponse de Jeroen, cela fonctionne très bien, jusqu'à ce que vous souhaitiez suivre les soumissions et obtenir des rapports détaillés, ce que les formulaires Web font très bien!

mais si vous souhaitez utiliser cette méthode, puis-je également suggérer Advanced Form Block qui vous permet également de mettre le nœud ajouter un formulaire dans un bloc et de simplement l'insérer sur une page et cela supprime la nécessité de lien direct vers un formulaire d'ajout de nœud et il vous permet également de conserver tout le style de votre site :)

Si quelqu'un peut comprendre cela, veuillez intensifier!

0
Alex Caputo

Vous pouvez également migrer des nœuds vers des soumissions de formulaires Web à l'aide du module Migrate Node-to-Webform . Voici une citation à ce sujet (à partir de la page du projet du module):

Migre les nœuds (Drupal 6) vers les soumissions de formulaires Web (Drupal 7). par exemple. Récupère tous les nœuds de type "article" et remplit un formulaire Web en créant une soumission pour chaque nœud.

0
user30654