Pergunta

Estou fazendo uma validação de formulário da web usando webform_form_alter.Estou usando webform_form_alter porque alterno determinado conteúdo em um campo "select".

Em meu webform-form-317.tpl.php eu defini novos conjuntos de campos, configurei meus campos neste novo conjunto de campos e desmarquei o original do formulário da 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']);

no meu webform_form_alter tenho o seguinte código:

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

Minha função Validate_form se parece com:

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

O problema é que $form_values['submitted_tree']['ContactInfo']['phone_home'] volta quando nada, mesmo que o usuário tenha inserido algo no campo de texto.

Alguma sugestão sobre o que estou fazendo de errado?

Como segunda pergunta, caso alguém também responda, como modifico esses campos de texto para definir a classe para "erro obrigatório de texto de formulário" para que apareçam em vermelho com o restante dos campos obrigatórios.

Obrigado

Foi útil?

Solução

Espero que você não escreva este código no módulo webform, mas tenha criado um módulo personalizado para ele.

No primeiro caso, sua função deve ser

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 você está falando sobre a classe de erro, o Drupal adiciona-a a todos os campos que possuem um erro definido como é feito no código acima.Você precisa passar o nome do campo do formulário como primeiro parâmetro para o form_set_error função.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top