You are here

43 使用form_set_error

admin 的头像
Submitted by admin on 星期六, 2015-09-19 04:48

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com

Beta5里面,有一个重大的改变,就是这段代码:

  /*

   $errors[$rule['field_name']][$langcode][$delta][] = array(

              'error' => 'date_range_'.$rule['ruleid'], 

              'message' => t($rule['error_message']),

            );

*/

if($flag){

  $error = $rule['field_name'].']['.$langcode.']['.$delta.']['.$rule['col'];

  $message = t($rule['error_message']);

  form_set_error($error,$message);

}

以前设置错误消息的时候,我总是使用$errors数组,设置,但是它有一个问题,对于emaillink这样的字段不起作用,就是说数组形式,只适用于一部分情况,还有一部分情况不适用。我开始不是很想使用form_set_error,但是这里为了解决这个问题,不得不这样。但是使用了form_set_error以后,又出现了一个新的问题,一个实体表单,嵌套到另一个表单里面的时候,form_set_error就不起作用了,不是不起作用,而是不能完全正确的工作了,为什么?因为这里我们假定了 表单元素的名字的结构是这样的:

$error = $rule['field_name'].']['.$langcode.']['.$delta.']['.$rule['col'];

一般情况下,都是正确的,但是在嵌套表单的情况下,就出了问题。有兴趣的,可以看一下field collection的嵌套形式。


Drupal版本: