2

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

因此,使用 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');

}

我整天都在想如何做到这一点。有没有人知道这是怎么做到的?谢谢。

4

1 回答 1

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 变量之前有一个 & 符号。

于 2012-09-07T02:19:52.497 回答