Extra Block Types (EBT) - New Layout Builder experience❗

Extra Block Types (EBT) - styled, customizable block types: Slideshows, Tabs, Cards, Accordions and many others. Built-in settings for background, DOM Box, javascript plugins. Experience the future of layout building today.

Demo EBT modules Download EBT modules

❗Extra Paragraph Types (EPT) - New Paragraphs experience

Extra Paragraph Types (EPT) - analogical paragraph based set of modules.

Demo EPT modules Download EPT modules

Scroll
19/04/2025, by Ivan

Menu

Էակների հետ աշխատանքը Drupal-ում միատեսակ է, և բոլոր CRUD գործողություններն էլ նույնն են բոլոր էակների համար։ Այս հոդվածում մենք կսովորենք, թե ինչպես աշխատել էակների հետ սեփական կոդում։ 

Եկեք սկզբում դիտենք պարզ օրինակներ։

Ծրագրային եղանակով հանգույցի ստեղծում 

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

Հանգույց ստեղծելու համար անհրաժեշտ է լրացնել բոլոր պարտադիր դաշտերը, ըստ լռելյայն՝ միայն Title դաշտն է պարտադիր։ Հանգույցի ստեղծումից հետո կարող եք նաև մուտք գործել հանգույցի օբյեկտին՝

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

create() մեթոդը գտնվում է Node.php դասում։ Եթե էակի տիպն ունի իր սեփական create() մեթոդը, ապա ցանկալի է օգտագործել հենց այն։ Չնայած կան նաև էակ ստեղծելու համընդհանուր տարբերակներ։

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

Ի վերջո, save() մեթոդի միջոցով պահպանում ենք էակը։

Ծրագրային եղանակով հանգույցի (էակի) թարմացում

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

Էակների դաշտերի խմբագրման մասին մանրամասն դիտարկել ենք նախորդ հոդվածում՝

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

Ծրագրային եղանակով հանգույցի (էակի) ջնջում

Եթե ցանկանում եք ջնջել մեկ հանգույց, ապա դա կարելի է անել delete() մեթոդի միջոցով՝

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

Ծրագրային եղանակով մի քանի հանգույցների (էակների) ստեղծում

Երբ անհրաժեշտ է բեռնել բազմաթիվ հանգույցներ, անհատապես դա անելն ավելի շատ ռեսուրսներ կպահանջի, քանի որ յուրաքանչյուր հանգույց ունի դաշտեր, և տվյալների բազայից բեռնելու համար պետք է կատարել բազմաթիվ SQL հարցումներ։ Ավելի արդյունավետ է բեռնել բոլոր հանգույցները միանգամից՝

$nids = db_select('node_field_data', 'n')
  ->fields('n', ['nid'])
  ->condition('title', $my_title)
  // node_access պիտակը կստուգի մատչելիության իրավունքը։
  ->addTag('node_access')
  ->execute()
  ->fetchCol();
 
$nodes = Node::loadMultiple($nids);

Ծրագրային եղանակով մի քանի հանգույցների (էակների) ջնջում

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