2010-09-29 31 views
0

Je suis en train de faire une validation webform en utilisant webform_form_alter. J'utilise webform_form_alter parce que je change de contenu sur un champ "select".Validation Webform Drupal (webform_form_alter)

Dans mon formulaire webform-317.tpl.php, j'ai défini de nouveaux fieldsets. J'ai défini mes champs dans ce nouveau fieldset et j'ai supprimé l'original du formulaire Web.

$form['submitted']['ContactInfo'] = array(
'#type' => 'fieldset', 
'#prefix' => '<div id="ContactInfo">', 
'#suffix' => '</div>', 
'#weight' => -10, 
'#title' => 'Contact Information' 
); 

$form['submitted']['ContactInfo']['phone_home'] = $form['submitted']['phone_home']; 
unset($form['submitted']['phone_home']); 

dans mon webform_form_alter Je le code suivant:

switch ($form_id) 
{ 
case 'webform_client_form_317': 
{ 
$form['#validate'][] = 'validate_form'; 
} 
} 

fonction Mon valider_form ressemble:

function validate_form($form_id, $form_values) 
{ 
     if ($form_values['submitted_tree']['ContactInfo']['phone_home'] == "") 
     { 
      form_set_error('phone_error', t('Please enter a home phone number.')); 
     } 
} 

Le problème est que les form_values ​​$ [ 'submitted_tree'] [ » ContactInfo '] [' phone_home '] revient car rien ne permet à l'utilisateur d'entrer quelque chose dans le champ de texte.

Des suggestions sur ce que je fais mal? En tant que deuxième question au cas où quelqu'un aussi les réponses, comment puis-je modifier ces champs de texte pour définir la classe pour "form-text required error" afin qu'ils apparaissent en rouge avec le reste des champs obligatoires.

Merci

Répondre

1

J'espère que vous n'écrivez pas ce code dans le module webform, mais ai fait votre module personnalisé pour elle.

Dans le premier cas, votre fonction doit être

function validate_form($form, &$form_state) { 
    if ($form_state['values']['submitted_tree']['ContactInfo']['phone_home'] == "") { 
     form_set_error('phone_home', t('Please enter a home phone number.')); 
    } 
} 

Si vous parlez de la classe d'erreur, Drupal ajouter à tous les champs qui a une erreur comme cela se fait mettre sur le code ci-dessus. Vous devez passer le nom du champ de formulaire en tant que premier paramètre à la fonction form_set_error.

+0

Hey googletorp. Cela ne me donne malheureusement toujours pas la valeur de 'phone_home' même si le champ contient du texte (ou pas), je reçois toujours le message "Please enter a home phone number error" (autrement dit le $ form_state [. ..] est toujours "" (ou null)). Si je fais un drupal_set_message sur cette valeur pour le plaisir et je n'ai rien. –

+0

Vous l'avez obtenu en utilisant votre réponse ici http://stackoverflow.com/questions/1464056/drupal-6-form-state-values-empty-on-submit thanks! –