Quando si lavora con Drupal e si eseguono operazioni di manutenzione o pulizia dei contenuti e dei tipi di entità, può capitare di imbattersi in un errore come questo nel log:
A non-existent config entity name returned by FieldStorageConfigInterface::getBundles(): entity type: node, bundle: [BUNDLE_TYPE], field name: [FIELD_NAME]
Cosa significa questo errore?
Questo messaggio di errore indica che Drupal sta tentando di recuperare una configurazione di field associata a un bundle (tipo di contenuto) che non esiste più. In particolare, la configurazione interna dei campi (field_map) mantiene ancora un riferimento a quel bundle fantasma.
Questo accade spesso quando:
- Un bundle viene eliminato manualmente dal database (errore).
- Un modulo contrib crea e poi elimina un tipo di contenuto.
- C'è un'incongruenza tra la configurazione salvata e lo stato reale del sito.
Come risolvere
Per risolvere il problema è necessario rimuovere manualmente il riferimento orfano dalla mappa dei campi (bundle_field_map). Di seguito un semplice script PHP da eseguire in un contesto Drupal (es. via drush php o tramite un modulo custom):
<?php
use Drupal::keyValue;
// Recupera la mappa dei campi per l'entità "node"
$key_value = \Drupal::keyValue('entity.definitions.bundle_field_map');
$field_map = $key_value->get('node');
// Sostituire con i valori effettivi dell'errore
$field_name = '[FIELD_NAME]';
$bundle_to_remove = 'BUNDLE_TYPE';
// Verifica e rimuove il bundle se presente
if (isset($field_map[$field_name]['bundles'][$bundle_to_remove])) {
unset($field_map[$field_name]['bundles'][$bundle_to_remove]);
$key_value->set('node', $field_map);
echo "Bundle rimosso dalla field map: $bundle_to_remove\n";
}
else {
echo "Bundle non trovato nella field map: $bundle_to_remove\n";
}