Remplir automatiquement un champ webform avec le titre du node précédent

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour à tous,

J'ai besoin de faire un formulaire de commande pré-rempli avec le titre de l'article.

Pour cela, j'ai une vue qui liste les articles. J'ai donc créé un champ custom text avec comme lien /webform?ref=[title]

Dans mon webform (qui a comme url webform) j'affiche dans un textfield le titre en mettant en valeur par défaut %get[ref].

Cela fonctionne bien pour les titres sans accents. Or dès que j'ai un caractère accentué ou un apostrophe (') le titre est tronqué.

Effectivement dans la vue j'ai quelque chose du genre /webform?ref=Catalogue%20de%20l'exposition%20%22TEST%20Illustr%C3%A9%22

Et dans ma weform j'ai "Catalogue de l".

Est-ce que quelqu'un aurait une idée ?
Soit pour résoudre ce problème ou en passant par une autre solution.

Merci d'avance à vous.

Version de Drupal : 
Tags : 

Bonjour, merci de votre réponse, sauf que dans la vue on ne peut pas mettre de code php.
J'ai finalement opté pour un petit module. Voir le post suivant:
http://drupalfr.org/forum/support/developpement/21722-webform-formulaire...

<?php
// $Id: form_postuler.module,v 1.0 2009/10/19 14:18:05 selinav Exp $
//Hook alter form pour dire à drupal d'altérer le formulaire
function form_postuler_form_alter(&$form, &$form_state, $form_id) {
   
$nid=arg(1);
  
//Je dis si mon form_id correspond à celui du form que je veux altérer (webform_client_form_211) et que mon nid est différent de l'id de mon node formulaire (211 dans mon cas)(car sinon qd on revoie les soumissions le titre est altéré par la page en cours et de l'id du formulaire lié à webform block)
   
if($form_id=='webform_client_form_211' && $nid!=211){
      
      
//recup email cck     
      
$node = node_load(array('nid' => $nid));
     
$mon_champ=$node->field_job_email_contact[0]['email'];
       
//récup titre de mon noeud en cours pour le passer ensuite ds un champ
               
$titre=$node->title;
   
       if(!empty(
$mon_champ)){
           
//affectation valeur mail cck à champ caché créé via webform
                      
$form['submitted']['email_offre']['#default_value']=$mon_champ;
      }
                
//affectation de mon titre à un champ texte désactivé pour récupérer le titre de l'offre d emploi
     
$form['submitted']['titre_offre']['#default_value']=$titre;
  }
 
 
}
?>

Bonjour,

Je suis débutante sur drupal, et la j'ai un souci, le problème est que j'utilise webform sous drupal 7, et je veux le remplir a partir d'un autre type de donnée, est ce que vous pouvez me dire comment je doit procédé pour ça?

Merci d'avance.

Merci, sincèrement je connais presque rien en php, je vais essayé de suivre le commentaire, mais le problème est que je voie que le poste n'est pas résolu, si vous pouvez partager le module que vous avez crée cela pourra peut être m'aidé, et aidé d'autre personnes je pense.

Merci.

Voici mon module

// $Id: mon_module.module,v 1.0 2010/12/08 14:18:05 moi Exp $
//Hook alter form pour dire à drupal d'altérer le formulaire
function mon_module_form_alter(&$form, &$form_state, $form_id) {
   //Je dis si mon form_id correspond à celui du form que je veux altérer (webform_client_form_197) et que mon nid est différent de l'id de mon node formulaire (197 dans mon cas)(car sinon qd on revoie les soumissions le titre est altéré par la page en cours et de l'id du formulaire lié à webform block)
    if($form_id=='webform_client_form_197' && $nid!=197){

        //recup titre du noeud en référence
        $node2 = node_load($_GET['ref']);
        $titre=$node2->title;
       
       //affectation de mon titre à un champ texte pour récupérer le titre de la publication dans le mail et dans le formulaire
      $form['submitted']['ref']['#default_value']=$titre;
  }
}

Il faut donc connaitre le nid de ton webform que tu as crée précédement.
Dans ton webform tu crée un field "ref" ou tu vas coller la valeur que tu veux en chargant le noeud avec le noad_load suivi du $node2->valeur_que_tu_veux_récuperer.

J'espère que ca va t'aider.

Merci beaucoup pour votre aide, mais j'ai quelques questions a vous poser svp, vue que je connais rien en php

1- d'ou je ramène ces informations? form_id=='webform_client_form_211' && $nid!=211
2- comment j'envoie mes informations dans l'url pour les récupérer après dans mes champs du webform? sachant aussi que j'ai pas qu'un seul champs a récupérer, j'ai plusieurs

Merci d'avance.

1- d’ou je ramène ces informations ? form_id==’webform_client_form_211’ && $nid !=211

Tu vas sur ton webform et tu fais "éditer". Dans l'url tu as quelque chose du genre /node/211. C'est ce numéro que tu mets. C'est le nid de ton noeud.

2- comment j’envoie mes informations dans l’url pour les récupérer après dans mes champs du webform ? sachant aussi que j’ai pas qu’un seul champs a récupérer, j’ai plusieurs

Pour répondre à ta question il faudrait que je comprenne mieux ce que tu veux faire. As-tu un exemple en ligne ? Tu peux m'envoyer ça en Message Privé si tu veux.

Merci pour votre aide, je vais vous expliqué ce que je dois faire:

je dois créer un formulaire, genre web assistance: mes clients vont m'envoyé des demande d'assistance s'ils ont des problèmes, un client quand il se connecte a son compte, et ouvre la page de web assistance, il ne saisie pas son nom, son adresse, un numéro de série de son article...etc, pour cela je dois les récupérer, et ces informations seront affiché automatiquement, sachant aussi, que le nom adresse...etc sont ajouté l'heure de la création d'un utilisateur, et j'ai utilisé nod-réference pour affecter un ou plusieurs articles a un client.

j'espère que c'est plus clair,

Merci beaucoup.

Bonjour Ceoph,

Souhaitant récupérer le titre du node dans lequel j'ai inséré un webform (block), j'ai éssayé d'appliquer ton module. J'ai bien sur changé l'ID du webform par le miens ainsi que le champ dans lequel je souhaite réceptionner le titre du nodE. Je suis également sous Drupal 7 mais rien ne se produit quand je soumet le formulaire