[英]Drupal Webform Validation (webform_form_alter)
我正在使用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']回来了,因为即使用户在文本字段中输入了任何内容,也什么也没有。
关于我在做什么错的任何建议吗?
作为第二个问题,如果有人也给出答案,我如何修改这些文本字段以将类设置为“表单文本必需的错误”,以便它们与其余的必填字段一起显示为红色。
谢谢
希望您不要在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
函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.