logo

Extra Block Types (EBT) - Nuova esperienza con Layout Builder❗

Extra Block Types (EBT) - tipi di blocchi stilizzati e personalizzabili: Slideshows, Tabs, Cards, Accordion e molti altri. Impostazioni integrate per sfondo, DOM Box, plugin javascript. Vivi oggi il futuro della costruzione dei layout.

Demo moduli EBT Scarica moduli EBT

❗Extra Paragraph Types (EPT) - Nuova esperienza con Paragraphs

Extra Paragraph Types (EPT) - insieme di moduli basati su paragrafi in modo analogo.

Demo moduli EPT Scarica moduli EPT

Scorri
16/10/2025, by Ivan

Menu

Il lavoro con le entità in Drupal è unificato e tutte le operazioni CRUD (Create, Read, Update, Delete) sono le stesse per ogni tipo di entità. In questo articolo vedremo come lavorare con le entità nel codice personalizzato.

Iniziamo con esempi semplici.

Creare un nodo tramite programmazione

use \Drupal\node\Entity\Node;
 
$node = Node::create([
  'type'        => 'article',
  'title'       => 'Druplicon test',
]);
$node->save();

Per creare un nodo, è necessario aggiungere tutti i campi obbligatori; per impostazione predefinita è richiesto solo il campo Title. È inoltre possibile accedere all’oggetto nodo dopo la sua creazione:

$node = Node::create([
  'type'        => 'article',
  'title'       => 'Druplicon test',
]);
$node->field_text->value = 'Testo semplice';
$node->save();

Il metodo create() si trova nella classe Node.php. Se un tipo di entità dispone di un proprio metodo create(), è preferibile utilizzare quello. Tuttavia, esistono anche modi universali per creare un’entità.

$node_entity_type = \Drupal::entityTypeManager()->getDefinition('node');
$node = new Node([
  $node_entity_type->getKey('bundle') => 'movie',
  $node_entity_type->getKey('label') => 'Foo',
  'field_release_date' => '1/1/2015',
]);
$node->save();

Alla fine, utilizzando il metodo save(), salviamo l’entità.

Aggiornare un nodo (entità) tramite programmazione

$nid = 234; 
$node_storage = \Drupal::entityTypeManager()->getStorage('node');
$node = $node_storage->load($nid);
 
$node->title = 'Nuovo titolo';
$node->field_text = 'testo';
 
$node->save();

Abbiamo trattato in dettaglio la modifica dei campi di un’entità nell’articolo precedente:

http://drupalbook.org/drupal/9111-work-entity-fields-programmatically

Eliminare un nodo (entità) tramite programmazione

Se vuoi eliminare un singolo nodo, puoi farlo utilizzando il metodo delete():

$nid = 123;
$node = node_load($nid);
$node->delete();

Creare più nodi (entità) tramite programmazione

Quando devi caricare molti nodi, farlo uno per uno può risultare dispendioso, poiché ogni nodo ha campi che richiedono molte query SQL per essere caricati dal database. È molto più veloce caricare tutti i nodi in un’unica operazione:

$nids = db_select('node_field_data', 'n')
  ->fields('n', ['nid'])
  ->condition('title', $my_title)
  // Il tag node_access controllerà i permessi di accesso.
  ->addTag('node_access')
  ->execute()
  ->fetchCol();
 
$nodes = Node::loadMultiple($nids);

Eliminare più nodi (entità) tramite programmazione

$result = \Drupal::entityQuery("node")
  ->condition('created', strtotime('-30 days'), '=')
  ->execute();
 
$storage_handler = \Drupal::entityTypeManager()->getStorage("node");
$entities = $storage_handler->loadMultiple($result);
$storage_handler->delete($entities);