Удалить заблокированные поля программно
Я обновил веб-сайт до drupal 8, в котором я обнаружил созданное поле, и мне нужно удалить это поле, так как оно стало бесполезным.
Поле заблокировано, и это мешает мне удалить его из интерфейса.
Я попытался удалить его с помощью field_purge_field()
, но это тоже не сработало.
Ответ для Как правильно удалять поля программно? не сработало для меня.
Редактировать: Я попробовал этот фрагмент кода, но ничего не сделал вещь
$field = \Drupal::entityManager()->getStorage('field_config')->load($entity_type.$bundle_name.$field_machine_name);
field_purge_field($field);
Как удалить поля, которые в результате заблокированы? Как мне разблокировать их перед удалением?
2 answers
Очистка - это второй шаг после удаления поля. поле.модуль должен сделать это автоматически для вас.
Конфигурация поля - это сущность, вы удаляете ее, как и любую другую сущность:
$field->delete();
Вот этот ответ, более простой, проверенный и работающий:
\Drupal::entityManager()->getStorage('field_config')->load('my_entity_type.my_bundle.my_field_name');
Но помните, что лучший способ сделать это, если вы можете, - просто удалить поле через пользовательский интерфейс, а затем экспортировать конфигурацию с помощью drush cex