изменить значение $ items в hook_field_validate - PullRequest
0 голосов
/ 30 августа 2011

im строительный модуль, который добавляет новый виджет в поля, уже существующие в 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 нет ключа ['value'] ...

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

мой результат в $ item само по себе не $ item ['value'], так как я могу добавить этот ключ['value'] в переменную $ item без изменения хука проверки ядра

1 Ответ

0 голосов
/ 30 августа 2011

хорошо, эта проблема решена для меня ... если вы создали новый виджет для существующего поля и обнаружили эту ошибку

list_illegal_value

убедитесь, что вы создали форму виджета в качествеследующий

$element['value'] += array( // dont forget ['value'] it will couse this problem
'#title' => t( '@title' , array('@title' => $label)) , 
'#type' => 'select' , 
...etc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...