Question

Je suis en train de faire un formulaire internet de validation à l'aide de webform_form_alter.Je suis en utilisant webform_form_alter parce que je commutateur de certains contenus sur un champ "select".

Dans mon webform-form-317.tpl.php j'ai de définir de nouvelles balises html fieldsets, j'ai mis mon champs dans ce nouveau jeu de champs et de désactiver l'original du formulaire en ligne.

$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 j'ai le code suivant:

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

Mon Validate_form fonction 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 le $form_values['submitted_tree']['info contact']['phone_home'] revient comme rien n'est le même utilisateur a saisi quelque chose dans le champ de texte.

Toutes les suggestions sur ce que je fais mal?

Comme une deuxième question au cas où quelqu'un aussi les réponses, comment puis-je modifier la de ces objets textfield pour définir la classe "forme de texte requis erreur" de sorte qu'ils apparaissent en rouge avec le reste des champs obligatoires.

Merci

Était-ce utile?

La solution

J'espère que vous n'avez pas écrit ce code dans le module webform, mais avez fait votre un 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 une erreur est définie comme se fait sur le code ci-dessus.Vous devez passer dans le nom du champ de formulaire comme premier paramètre à la form_set_error fonction.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top