Am o acțiune personalizată pentru a actualiza unele valori de tabel pe baza selecției conținutului nodului. Acțiunile mele personalizate sunt listate corect în caseta de selectare a actualizării în bloc. Dar pot efectua operațiuni numai un conținut de nod aleatoriu. Orice gânduri!! de ce permite acțiunilor să se efectueze numai asupra anumitor conținuturi.
Vedeți operațiunea în bloc: https://www.drupal.org/project/views_bulk_operations
Versiunea încercată: 8.x-3.13, 4.0.0-rc1
<?php
spațiu de nume Drupal\custom_user\Plugin\Action;
utilizați Drupal\node\Entity\Node;
utilizați Drupal\views_bulk_operations\Action\ViewsBulkOperationsActionBase;
utilizați Drupal\Core\Session\AccountInterface;
utilizați Drupal\Core\StringTranslation\StringTranslationTrait;
utilizați Drupal\Core\Entity\ContentEntityInterface;
/**
* Nodul de publicare pentru moderarea conținutului.
*
* @Acțiune(
* id = "notification_read",
* label = @Translation ("Actualizați notificarea ca citire"),
* tip = "nod",
* confirma = ADEVĂRAT
* )
*/
clasa NotificationRead extinde ViewsBulkOperationsActionBase {
utilizați StringTranslationTrait;
/**
* {@inheritdoc}
*/
funcția publică execute(ContentEntityInterface $entity = NULL) {
$nid = $entitate->id();
$uid = \Drupal::currentUser()->id();
dacă ($nid) {
$conexiune = \Drupal::database();
$connection->delete('notificări')
->condition('entity_id', $nid)
->condition('entity_uid', $uid)
->execute();
}
}
/**
* {@inheritdoc}
*/
acces la funcția publică ($obiect, AccountInterface $cont = NULL, $return_as_object = FALSE) {
\Drupal::logger('test')->warning(print_r(„test”, TRUE));
if ($obiect instanceof Node) {
returnează Adevărat;
}
returnează FALSE;
}
}[![introduceți descrierea imaginii aici][1]][1]