Я пытаюсь создать пользовательское действие для массовых операций с коммерческими заказами.
Я использую следующий код.
mymodule/src/Plugin/Action/DeleteOrderAndApps.php
пространство имен Drupal\mymodule\Plugin\Action;
используйте Drupal\commerce_order\Entity\Order;
используйте Drupal\Core\Action\ActionBase;
используйте Drupal\Core\Session\AccountInterface;
используйте Drupal\node\Entity\Node;
/**
* Удалить заказ и действие прикрепленных приложений
*
* @Действие(
* id = "delete_order_and_apps",
* label = @Translation("Удалить заказ и приложения"),
* тип = "commerce_order"
* )
*/
класс DeleteOrderAndApps расширяет ActionBase {
/**
* {@inheritdoc}
*
*/
выполнение публичной функции (заказ $order = NULL) {
// ¦
}
/**
* {@inheritdoc}
*/
доступ к общедоступной функции ($ объект, AccountInterface $ учетная запись = NULL, $ return_as_object = FALSE) {
$result = $object->access('удалить', $account, TRUE);
вернуть $return_as_object ? $результат: $результат->разрешено();
}
}
Я не уверен, что мне это нужно, но у меня также есть mymodule/config/install/system.action.delete_order_and_apps.yml файл.
код языка: en
статус: правда
зависимости:
модуль:
- commerce_order
идентификатор: delete_order_and_apps
label: 'Удалить заказ и приложения'
тип: commerce_order
плагин: delete_order_and_apps
конфигурация: { }
Запутанная часть заключается в том, что есть 2 разных массовых варианта: VBO и массовые действия ядра для объекта Order. К сожалению, они не используют одни и те же определения действий, но мое новое действие не отображается как вариант ни для одного из них при создании представления. Я сделал многие из них таким же образом, но все они являются действиями Node.
Не уверен, что что-то отсутствует в моем коде или, возможно, что-то отсутствует в Commerce, что требуется для добавления настраиваемых действий (возможно, что-то отсутствует в определении сущности).
Я использую Drupal 8.9.20 и модуль Commerce 8.x-2.24.