-
-
Save apotashov/078e116203f5519636f64a3895a56cfe to your computer and use it in GitHub Desktop.
Drupal 8: hook_update_N() Examples
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <?php | |
| // Add base field to entity | |
| $storage_definition = BaseFieldDefinition::create('email') | |
| ->setLabel(t('Email address')) | |
| ->setDescription(t('The email address associated with the event participant.')) | |
| ->setDisplayOptions('form', [ | |
| 'region' => 'hidden', | |
| 'weight' => 0, | |
| ]); | |
| \Drupal::entityDefinitionUpdateManager() | |
| ->installFieldStorageDefinition('email', 'cmb_event_participant', 'cmb_event_participant', $storage_definition); | |
| // Delete a single base field from entity | |
| $update_manager = Drupal::service('entity.definition_update_manager'); | |
| $definition = $update_manager->getFieldStorageDefinition('participant_id', 'cmb_event_participant'); | |
| $update_manager->uninstallFieldStorageDefinition($definition); | |
| // Delete multiple base fields from entity | |
| $update_manager = Drupal::service('entity.definition_update_manager'); | |
| $base_fields = [ | |
| 'email_confirmation', | |
| 'email_from_name', | |
| 'email_from_address', | |
| 'email_message' | |
| ]; | |
| foreach ($base_fields as $base_field) { | |
| $definition = $update_manager->getFieldStorageDefinition($base_field, 'cmb_event'); | |
| $update_manager->uninstallFieldStorageDefinition($definition); | |
| } | |
| // Delete configurable fields | |
| use Drupal\field\Entity\FieldStorageConfig; | |
| use Drupal\field\Entity\FieldConfig; | |
| $field_names = [ | |
| 'field_cmb_author_img', | |
| 'field_cmb_author_sub_title' | |
| ]; | |
| // Delete field instances | |
| foreach ($field_names as $field_name) { | |
| $field = FieldConfig::loadByName('node', 'cmb_author', $field_name); | |
| if (!empty($field)) { | |
| $field->delete(); | |
| } | |
| } | |
| // Delete field storages | |
| foreach ($field_names as $field_name) { | |
| $field_storage = FieldStorageConfig::loadByName('node', $field_name); | |
| if (!empty($field_storage)) { | |
| $field_storage->delete(); | |
| } | |
| } | |
| // Delete content type | |
| $content_type = \Drupal::entityManager()->getStorage('node_type')->load('cmb_author'); | |
| $content_type->delete(); | |
| // Add or update a view from config file | |
| if (\Drupal::moduleHandler()->moduleExists('views')) { | |
| $config_path = drupal_get_path('module', 'cmb_event_participant') . '/config/install/views.view.cmb_event_participants.yml'; | |
| $data = Yaml::parse(file_get_contents($config_path)); | |
| \Drupal::configFactory()->getEditable('views.view.cmb_event_participants')->setData($data)->save(TRUE); | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment