1. Создаём плагин действия:
// src/Plugin/Action/MyAction.php
namespace Drupal\modulename\Plugin\Action;
use Drupal\Core\Action\ActionBase;
use Drupal\Core\Session\AccountInterface;
/**
* @Action(
* id = "my_action",
* label = @Translation("My action"),
* type = "node"
* )
*/
class MyAction extends ActionBase {
/**
* {@inheritDoc}
*/
public function access($object, AccountInterface $account = NULL, $return_as_object = FALSE) {
/** @var \Drupal\node\NodeInterface $object */
$access = $object->access('update', $account, TRUE);
return $return_as_object ? $access : $access->isAllowed();
}
/**
* {@inheritDoc}
*/
public function execute($entity = NULL) {
/** @var \Drupal\node\NodeInterface $entity */
...
$entity->save();
}
}
2. Создаём конфиг плагина:
# config/install/system.action.my_action.yml
id: my_action
label: 'My action'
plugin: my_action
type: node
langcode: en
status: true
configuration: { }
dependencies:
module:
- node
3. Создаём схему конфига плагина:
# config/schema/modulename.schema.yml
action.configuration.my_action:
type: action_configuration_default
label: 'My action configuration'
4. Переустанавливаем модуль, либо выполняем
vendor/bin/drush config-import --partial --source=modules/custom/modulename/config/install
Написанное актуально для
Drupal 8+
Добавить комментарий