Domanda

Sto eseguendo una convalida del modulo web utilizzando webform_form_alter.Sto utilizzando webform_form_alter perché cambio determinati contenuti in un campo "seleziona".

Nel mio webform-form-317.tpl.php ho definito nuovi fieldset, ho impostato i miei campi in questo nuovo fieldset e ho annullato l'originale dal webform.

$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']);

nel mio webform_form_alter ho il seguente codice:

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

La mia funzione Validate_form è simile a:

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.'));
      }
}

Il problema è che $form_values['submission_tree']['ContactInfo']['phone_home'] ritorna come se nulla fosse, anche se l'utente ha inserito qualcosa nel campo di testo.

Qualche suggerimento su cosa sto facendo di sbagliato?

Come seconda domanda nel caso in cui qualcuno risponda anche, come posso modificare questi campi di testo per impostare la classe per "errore richiesto testo modulo" in modo che vengano visualizzati in rosso con il resto dei campi obbligatori.

Grazie

È stato utile?

Soluzione

Spero che tu non scriva questo codice nel modulo webform, ma che tu abbia creato un modulo personalizzato per questo.

Nel primo caso, la tua funzione dovrebbe essere

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.'));
    }
}

Se stai parlando della classe di errore, Drupal la aggiunge a tutti i campi che hanno un errore impostato come fatto nel codice precedente.È necessario passare il nome del campo modulo come primo parametro al file form_set_error funzione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top