Drupal Webform验证(webform_form_alter)

时间:2010-09-29 01:25:10

标签: validation drupal drupal-6 drupal-webform drupal-fapi

我正在使用webform_form_alter进行一些webform验证。我正在使用webform_form_alter,因为我在“选择”字段上切换了某些内容。

在我的webform-form-317.tpl.php中,我定义了新的字段集,我将字段设置为这个新字段集,并从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']);

在我的webform_form_alter中我有以下代码:

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

我的Validate_form函数如下所示:

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

问题是$ form_values ['submitted_tree'] ['ContactInfo'] ['phone_home']会回来,因为用户没有在文本字段中输入内容。

对我做错了什么建议?

作为第二个问题,如果某人还有答案,我如何修改这些文本字段以设置“表单文本必需错误”的类,以便它们以红色显示其余的必填字段。

由于

1 个答案:

答案 0 :(得分:1)

我希望你不要在webform模块中编写这段代码,但是已经为它制作了一个自定义模块。

在第一种情况下,您的功能应该是

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

如果您正在讨论错误类,Drupal会将其添加到所有具有错误集的字段中,如上面的代码所做的那样。您需要将表单字段的名称作为第一个参数传递给form_set_error函数。