Drupal 7如何使用实体注册表单进行表单验证

时间:2012-09-04 11:01:41

标签: drupal-7

我正在使用实体注册来让用户注册一个事件。我有一些字段要根据其他字段的值进行验证。

因此,使用hook_form_id_form_alter,我能够添加第二个验证功能。第二个功能是我希望我可以添加验证注册表单的代码。

function coastal_custom_form_registration_form_alter($form, &$form_state, $form_id) {
  $form['#validate'][] = 'event_registration_form_validate';  
}

但每当我提交表单时,应该执行验证的函数永远不会被调用。

//this function never gets called
function event_registration_form_validate(&$form, &$form_state){
  drupal_set_message('hi from validation');
  form_set_error('you are in form_registration');

}

我一直想着如何做这一整天。有没有人想出这是怎么做到的?感谢。

1 个答案:

答案 0 :(得分:1)

读取hook_form_alter上的api文档,我发现你必须通过引用$ form传递。所以编写函数的正确方法应该是:

function coastal_custom_form_registration_form_alter(&$form, &$form_state, $form_id) {
  $form['#validate'][] = 'event_registration_form_validate';  
}

请注意$ form变量之前有&符号(&)。