Drupal 7 形式 api。验证后将自定义 class 添加到元素

Drupal 7 form api. Add custom class to element after validation

我环顾四周,找不到关于如何将自定义 class 添加到表单 element/elements 或 <form> 标签的解决方案。我有一个自定义表单验证功能,可以执行一些自定义验证。 form_set_error 确实在元素上设置了 error class,但我想在 form 标签内的任何位置添加我的自定义 class。

我找到了答案here。事实证明,您可以在提交后使用 $form_state 对表单进行更改。我做到了

if($haserror) {
    $form_state['complete form']['#attributes'] = array('class'=>array('contains_error'));
}

由于目标只是在出错时自定义字段的显示,更简洁的方法是在主题中创建自己的 theme_form_element() 并使用函数 form_get_error($element ) 以在字段返回任何错误时添加所需的 class。 使用此方法,您还可以在错误字段旁边显示错误消息,而不是在表单顶部。