跳转到主要内容
东方龙马 提交于 25 June 2009
如果说system_settings_form()为我们做了存储表单的取值的工作,那我们如何检验在“Annotations per node”区域中输入的内容是不是一个数字呢?我们能用某种方法让钩子来控制表单的提交进程么?当然能!我们只需要定义一个验证函数,并用它对我们找到的错误进行报错就行了,它应该在sites/all/modules/custom/annotate/annotate.admin.inc文件中:   /** * Validate the annotation configuration form. */ function annotate_admin_settings_validate($form, $form_state) { $limit = $form_state['values']['annotate_limit_per_node']; if (!is_numeric($limit)) { form_set_error('annotate_limit_per_node', t('Please enter a number.')); } }   现在,当Drupal处理表单的时候,就会调用nnotate_admin_settings_validate()函数来进行验证了。如果我们认为用户输入了一个不合规则的数据,我们就对发生错误的地方报错,反映到显示上就是弹出报错信息并用对出错的区域进行高亮标记,如图2-5.                       图2-5 验证函数弹出报错信息   Drupal是如何知道该调用我们的函数了呢?实际是通过这样一种特殊的命名方式——用定义表单的函数名(annotate_admin_settings)加上_ validate。对于表单验证函数的调用过程的详细说明,参见第10章。
Taxonomy upgrade extras