Рейтинг:1

Установить поле объекта только для чтения после ввода пользователем

флаг ru

Я использую hook_entity_presave() для проверки некоторых условий и установки значения поля. Я хотел бы установить поле только для чтения после выполнения всех условий и сохранения значения в базе данных. Можно ли этого добиться или я должен использовать для этого другой крючок?

флаг cn
Только для чтения для пользователя, установившего значение? Для всех пользователей? Для админа? Чтобы реализовать что-то вроде режима только для чтения, вы можете использовать `hook_form_alter()` в форме редактирования, чтобы отменить установку поля, если оно уже имеет значение.
Bass-Ninja avatar
флаг ru
@PatrickKenny извините за неясность. Только для пользователя, установившего поле. Я хочу, чтобы они не меняли значение после его установки.
флаг cn
Может ли каждый пользователь редактировать только собственный контент пользователя? Или несколько пользователей могут редактировать один и тот же контент? (Если несколько пользователей могут редактировать один и тот же фрагмент контента, то также необходимо отслеживать, кто редактирует конкретное поле, чего Drupal не делает из коробки.)
Bass-Ninja avatar
флаг ru
Текущий пользователь является единственным, кто редактирует содержимое. Также мне удалось добиться желаемого эффекта с помощью hook_form_alter(). Спасибо.
флаг cn
Отлично, опубликуйте свой код (или аналогичный пример) в качестве ответа для будущих посетителей сайта.
Рейтинг:0
флаг kr

Отключить поле модуль это то, что вы ищете.

Модуль Disable Field помогает вам отключить поле любого типа контента... в зависимости от роли, выбранной администратором.

Рейтинг:0
флаг ru

Я смог добиться своего результата, используя следующий хук:

функция check_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
  если ($form_id == "form_id") {
    $form['field_example']["#disabled"] = TRUE;
  }
}

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.