2011-08-29 3 views
0

필드에 새 위젯을 추가하는 건물 모듈이 이미 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 을 내가

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

내 결과가 $ 항목에 ... 그 $ 항목 [ '값'] 더 키가 찾을 수 없습니다 그것은 자기 그래서 내가이 키 [ '값을 추가하는 방법에는 $ 항목 없음 ['값 '] ']을 변수 $ item에 적용하여을 수정합니다. 6,핵심 검증 후크

답변

0

확인이 문제는 ... 나를 위해 해결 당신이 당신의 위젯 양식을 만들었으므로 당신은 존재하는 필드에 대한 새 위젯을 생성하고이 오류

list_illegal_value

가 있는지 확인을 발견하는 경우 다음과 같이

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