Frage

Ich mache einige webform Validierung webform_form_alter verwenden. Ich verwende webform_form_alter, weil ich bestimmte Inhalte auf ein „wählen Sie“ Feld wechseln.

In meinem Webformular-form-317.tpl.php ich neue Field definiert ich meine Felder in diese neue Fieldset und unset das Original aus dem Webformular.

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

in meinem webform_form_alter Ich habe den folgenden Code:

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

Meine validiere_formular Funktion sieht aus wie:

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

Das Problem ist, dass der $ form_values ??[ ‚submitted_tree‘] [ ‚Contact‘] [ ‚phone_home‘] kommt zurück, als nichts, selbst die Benutzer etwas in das Textfeld eingegeben haben.

Irgendwelche Vorschläge auf, was ich falsch mache?

Als zweite Frage, wenn jemand auch die Antworten, wie ich das diese Textfelder modifiziere die Klasse setzen für „Form-Text erforderlich Fehler“, so dass sie mit dem Rest der Pflichtfelder in rot angezeigt.

Danke

War es hilfreich?

Lösung

Ich hoffe, dass Sie nicht über diesen Code in dem Webformular Modul schreiben, aber Ihnen ein benutzerdefiniertes Modul wettgemacht.

Im ersten Fall Ihre Funktion sollte

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

Wenn Sie über die Fehlerklasse sprechen, fügen Drupal es auf alle Felder, die einen Fehler gesetzt hat wie auf dem obigen Code ausgeführt wird. Sie müssen im Namen des Formularfeldes als erster param auf die form_set_error Funktion zu übergeben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top