更改hook_field_validate的$ items值

时间:2011-08-29 22:17:21

标签: drupal-7

即时构建模块,在drupal中已存在的字段中添加新窗口小部件 。 drupal使用此钩子来验证这个字段

function list_field_validate($entity_type, $entity, $field, $instance, $langcode, $items, &$errors) {
  $allowed_values = list_allowed_values($field);
  foreach ($items as $delta => $item) {
    if (!empty($item['value'])) { // =======> the problem is here
      if (!empty($allowed_values) && !isset($allowed_values[$item['value']])) {
        $errors[$field['field_name']][$langcode][$delta][] = array(
          'error' => 'list_illegal_value', 
          'message' => t('%name: illegal value.', array('%name' => $instance['label'])),
        );
      }
    }
  }
}

问题是:   当我用我的新小部件添加新字段...并且我保存字段设置时,我收到了消息:

list_illegal_value   然后我发现$ item没有键['值'] ...

foreach ($items as $delta => $item) {

我的结果是$ item it self no $ item [' value']   所以我如何将这个键[' value']添加到变量$ item而不修改   核心验证挂钩

1 个答案:

答案 0 :(得分:0)

好的,这个问题解决了我... 如果您为现有字段创建了新窗口小部件并发现此错误

list_illegal_value

确保您已将小部件表单创建为以下

$element['value'] += array( // dont forget ['value'] it will couse this problem
'#title' => t( '@title' , array('@title' => $label)) , 
'#type' => 'select' , 
...etc