@nasirliru

Как запретить редактирование поля, если оно уже заполнено?

мучаюсь пару дней уже. Нужно запретить редактирования поля "Ссылка на термин", если поле уже имеет значение. Но почему-то модуль не хочет работать. Вот никак. Никаких ошибок в логах, но не работает и все.
Вот, собственно говоря, сам модуль:

function field_acces_if_form_user_profile_form_alter(&$form, &$form_state, $form_id) {
$field_name = 'field_user_company_name'; // Машинное имя поля
$langcode = LANGUAGE_NONE; // Код языковой версии
if (isset($form[$field_name][$langcode])) {
  $items = element_children($form[$field_name][$langcode]);
  foreach ($items as $i) {
    // Если значение поля заполнено
    if ($form[$field_name][$langcode][$i]['value']['#default_value']) {
      $form[$field_name]['#disabled'] = TRUE; // Выключаем поле
      break; // И выходим из цикла
    }
  }
}
}
  • Вопрос задан
  • 164 просмотра
Пригласить эксперта
Ответы на вопрос 1
andead
@andead
друпал девелопер, фрилансер
В простейшем случае:

$form[$field_name][LANGUAGE_NONE]['#disabled'] = TRUE;


Но не факт, что это будет LANGUAGE_NONE и что у элемента есть [$i] и ['value']. Смотрите что в массиве, дизаблите тот же элемент, у которого проверяете #default_value
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы