getFormObject() и form-display. Ошибка.

Главные вкладки

Аватар пользователя lo_sinclair lo_sinclair 19 июня 2018 в 0:38

Здравствуйте.
Я пытаюсь в своем классе переопределить форму редактирования пользователя. Использую при этом дисплей формы, созданный в админке 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" - все работает, но с кастомным типом (дисплеем) нет.

public function getFormObject($entity_type, $operation) {
   // для проверки
    $entity_type = 'user';
    $operation = 'my_display'; //ошибка
    $operation = 'default'; //работает

    return $this->container->get('entity_type.manager')->getFormObject($entity_type, $operation);
 }

В чем здесь проблема, что нужно сделать?

hook_entity_type_alter в модуле присутствует:

function mymodule_entity_type_alter(array &$entity_types) {
    $entity_types['user']->setFormClass('my_display', 'Drupal\mymodule\Form\MyRegisterContinue');
}

Лучший ответ

Аватар пользователя lo_sinclair lo_sinclair 21 июня 2018 в 21:29

Отвечаю на всякий случай.
Проблема была в том, что оказывается, для обновления данных, которые в хуке, в восьмерке мало сделать обычную очистку кэша. Нужно выполнить cache rebuild.
drush cr
Выяснилось совершенно случайно, т.к. была открыта консоль. (У меня было изменено имя класса, а в кэше сидело старое).

Комментарии

Аватар пользователя lo_sinclair lo_sinclair 21 июня 2018 в 21:29

Отвечаю на всякий случай.
Проблема была в том, что оказывается, для обновления данных, которые в хуке, в восьмерке мало сделать обычную очистку кэша. Нужно выполнить cache rebuild.
drush cr
Выяснилось совершенно случайно, т.к. была открыта консоль. (У меня было изменено имя класса, а в кэше сидело старое).

Аватар пользователя lo_sinclair lo_sinclair 22 июня 2018 в 0:26

Через админку - "очистка кэша". Иногда для меня это быстрее. Но в семерке "drush cc" и очистка кэша в админке давало один и тот же результат.