Здравствуйте.
У меня есть кастомная сущность. У нее есть форма редактирования сущности.
Мне надо в хуке hook_FORM_ID_form_alter из этой формы получить значение поля "автор" этой сущности
Название поля автор: name="uid[0][target_id]"
Пытался получить так: $form_state->getValue('uid[0][target_id]'), но не работает
Комментарии
А зачем использовать hook_form_alter для кастомной формы? Можно же прямо в форме и писать нужный код.
Поле "автор" получается не из формы, а из объекта сущности
hook_form_alter мне нужен не только для этого. Там еще и другие действия есть. Да, не так выразился, действительно из объекта сущности.
Первый вопрос: где именно получить - т.е. на каком шаге?
$form_state->getValue('FIELD_NAME')
работает в функции сабмита (т.е. после отправки формы) и возвращает значение запрошенного поля.Есть ещё
$form_state->getValues()
, которая тоже может быть полезна на этапе сабмита и которая возвращает массив значений всех полей формы после её отправки.Если нужно получать значение (как оно уже сохранено в сущности) при построении формы (т.е. в методе
::buildForm()
или в имплементацииhook_FORM_ID_form_alter
), то следует читать это значение из собственно сущности, например:$entity->get('uid')
. Разумеется, сначала нужно получить загруженную в форму сущность с помощью$form_state->getFormObject()
:<?php
$form_object = $form_state->getFormObject();
if ($form_object instanceof EntityForm) {
$entity = $form_object->getEntity();
$uid = $entity->get('uid');
}
?>
Спасибо, помогли)