[résolu] Hook sur contact_personal_form

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,

Je cherche à placer un hook sur les formulaires de contact personnels des utilisateurs,
(de façon à envoyer un e-mail à l'administrateur du site en copie des messages envoyés, mais je n'en suis pas encore là !).

Malgré mes recherches, impossible que mon hook soit pris en compte !

Voici le code dans ma page template.php :

/implémentation d'un hook_theme
pour la création de fonctions de thèmes
pour le formulaire contact-personal-form
/
function MONTHEME_theme() {
   return array('contact_personal_form' => array('render element' => 'form'));
}

/* implémentation de la function hook de thème pour le formulaire */
function MONTHEME_contact_personal_form($variables){
$e = $variables['form']['mail']['default_value'];
$output = '<h3>Test de prise en compte du hook</h3>';
$output .= drupal_render_children($variables['form']);
return $output;
}

Naturellement "montheme" est remplacé par le nom de mon thème.

Je me suis basé entre autre sur ce bouquin, page 335.

Mais rien à faire, le site ne bronche pas.

Si quelqu'un aurait une idée...

Forum : 
Version de Drupal : 

Super, ça marche !

(Désolé, j'ai mis un peu de temps car je bosse sur plusieurs projet).

Pour info, voilà la tête de mon module : il permet d'envoyer aux administrateurs un copie de tous les mails envoyés via le formulaire de contact personnel.

<?php
// $Id;

/
* @file
* Module "custom_user_form" pour envoyer une copie aux administrateurs des mails envoyés par les formulaires de contact personnel (contact_personal_form)
*/

/
* Implementation of hook_form_alter()
*/

function custom_user_form_form_alter(&$form, &$form_state, $form_id){

switch($form_id){

  case 'contact_personal_form' : //Si on est dans un formulaire de contact perso
   //dsm($form);
  
   //Récupération des emails des administrateurs
   $users = entity_load('user');
   $emails = '';
   foreach($users as $user) {
    if (array_key_exists(3, $user->roles)) {
     if (strlen($emails) > 0) {
      $emails .= ',' . $user->mail;
     } else {
     $emails = $user->mail;
    }
   }
  }

  //Application des e-mails  
  $form[recipient]['#value']->mail .= ','.$emails;

  break;
}
}

Merci beaucoup pour ton aide !

Salut,
merci pour le code,
j'essaye de personnaliser le formulaire de contact, en remplaçant le login par le nom et prénom de l'utilisateur (fields dans user), mais je ne sais pas comment dans le code indiquer le remplacement de la valeur affichée.

voici mon code :

function contact_form_form_alter(&$form, &$form_state, $form_id){

switch($form_id){

  case 'contact_personal_form' : //Si on est dans un formulaire de contact perso
   dsm($form);
 
   //Récupération des emails des administrateurs
   $users = entity_load('user');
   $nom = $form['recipient']['#value']->field_user_nom['und'][0]['value'];
   $prenom = $form['recipient']['#value']->field_user_prenom['und'][0]['value'];
  
//voilà comment j'essaye de changer le login par les champs $nom/$prenom

$form['recipient']['#value']->name = $prenom ." ". $nom;

  break;
}
}

merci pour le coup de main !