public FieldUninstallValidator::validate($module)
Determines the reasons a module can not be uninstalled.
Example implementation:
1 2 3 4 5 6 7 8 9 10 | public function validate( $module ) { $entity_types = $this ->entityManager->getDefinitions(); $reasons = array (); foreach ( $entity_types as $entity_type ) { if ( $module == $entity_type ->getProvider() && $entity_type instanceof ContentEntityTypeInterface && $this ->entityManager->getStorage( $entity_type ->id())->hasData()) { $reasons [] = $this ->t( 'There is content for the entity type: @entity_type' , array ( '@entity_type' => $entity_type ->getLabel())); } } return $reasons ; } |
Parameters
string $module: A module name.
Return value
string[] An array of reasons the module can not be uninstalled, empty if it can. Each reason should not end with any punctuation since multiple reasons can be displayed together.
Overrides ModuleUninstallValidatorInterface::validate
See also
template_preprocess_system_modules_uninstall()
File
- core/modules/field/src/FieldUninstallValidator.php, line 51
Class
- FieldUninstallValidator
- Prevents uninstallation of modules providing active field storage.
Namespace
Drupal\field
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | public function validate( $module ) { $reasons = []; if ( $field_storages = $this ->getFieldStoragesByModule( $module )) { // Provide an explanation message (only mention pending deletions if there // remain no actual, non-deleted fields.) $fields_in_use = []; foreach ( $field_storages as $field_storage ) { if (! $field_storage ->isDeleted()) { $fields_in_use [ $field_storage -> getType ()][] = $field_storage ->getLabel(); } } if (! empty ( $fields_in_use )) { foreach ( $fields_in_use as $field_type => $field_storages ) { $field_type_label = $this ->getFieldTypeLabel( $field_type ); $reasons [] = $this ->formatPlural( count ( $fields_in_use [ $field_type ]), 'The %field_type_label field type is used in the following field: @fields' , 'The %field_type_label field type is used in the following fields: @fields' , [ '%field_type_label' => $field_type_label , '@fields' => implode( ', ' , $field_storages )]); } } else { $reasons [] = $this ->t( 'Fields pending deletion' ); } } return $reasons ; } |
Please login to continue.