logo

Dodatni tipovi blokova (EBT) - Novo iskustvo rada sa Layout Builder-om❗

Dodatni tipovi blokova (EBT) – stilizovani, prilagodljivi tipovi blokova: slajdšouvi, kartice sa tabovima, kartice, akordeoni i mnogi drugi. Ugrađena podešavanja za pozadinu, DOM Box, javascript dodatke. Iskusite budućnost kreiranja rasporeda već danas.

Demo EBT moduli Preuzmite EBT module

❗Dodatni tipovi pasusa (EPT) – Novo iskustvo rada sa pasusima

Dodatni tipovi pasusa (EPT) – analogni skup modula zasnovan na pasusima.

Demo EPT moduli Preuzmite EPT module

Scroll
27/05/2025, by Ivan

Rad sa entitetima u Drupalu je jedinstven, a sve CRUD operacije su takođe iste za sve entitete. U ovom članku ćemo razjasniti kako raditi sa entitetima u prilagođenom kodu.

Prvo pogledajmo jednostavne primere.

Kreiranje čvora (node) programatski

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

Da biste kreirali čvor, potrebno je da dodate sva obavezna polja, podrazumevano je to samo polje Naslov (Title). Takođe možete pristupiti objektu čvora nakon njegove kreacije:

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

Metod create() nalazi se u klasi Node.php, ako tip entiteta ima svoj create() metod, najbolje je koristiti njega. Iako postoje univerzalni načini za kreiranje entiteta.

$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();

Na kraju, metodom save() sačuvamo entitet.

Ažuriranje čvora (entiteta) programatski

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

Detaljnije o izmeni polja entiteta smo razmatrali u prethodnom članku:

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

Brisanje čvora (entiteta) programatski

Ako želite da obrišete jedan čvor, to možete učiniti pomoću metode delete():

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

Kreiranje više čvorova (entiteta) programatski

Kada je potrebno učitati mnogo čvorova, nije efikasno učitavati ih pojedinačno, jer svaki čvor ima polja i za učitavanje podataka iz baze će biti potrebno mnogo SQL upita. Mnogo je brže učitati sve čvorove odjednom:

$nids = db_select('node_field_data', 'n')
  ->fields('n', ['nid'])
  ->condition('title', $my_title)
  // Tag node_access će proveriti prava pristupa.
  ->addTag('node_access')
  ->execute()
  ->fetchCol();
 
$nodes = Node::loadMultiple($nids);

Brisanje više čvorova (entiteta) programatski

$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);