Здравствуйте.
Я пытаюсь в своем классе переопределить форму редактирования пользователя. Использую при этом дисплей формы, созданный в админке Structure > Display Modes > Form Modes
При этом возникает ошибка:
The "user" entity type did not specify a "my_display" form class in Drupal\Core\Entity\EntityTypeManager getFormObject()
Вот сам метод в EntityTypeManager.
если ему передать в качестве $operation те типы форм, которые определены в ядре, например, "default" или "register" - все работает, но с кастомным типом (дисплеем) нет.
// для проверки
$entity_type = 'user';
$operation = 'my_display'; //ошибка
$operation = 'default'; //работает
return $this->container->get('entity_type.manager')->getFormObject($entity_type, $operation);
}
В чем здесь проблема, что нужно сделать?
hook_entity_type_alter в модуле присутствует:
$entity_types['user']->setFormClass('my_display', 'Drupal\mymodule\Form\MyRegisterContinue');
}
Комментарии
Отвечаю на всякий случай.
Проблема была в том, что оказывается, для обновления данных, которые в хуке, в восьмерке мало сделать обычную очистку кэша. Нужно выполнить cache rebuild.
drush cr
Выяснилось совершенно случайно, т.к. была открыта консоль. (У меня было изменено имя класса, а в кэше сидело старое).
А что, в восьмёрке есть очистка кэша, отличная от drush cr? О_о
Через админку - "очистка кэша". Иногда для меня это быстрее. Но в семерке "drush cc" и очистка кэша в админке давало один и тот же результат.