Skip to content

Jeesson/content_mail_actions

Repository files navigation

Полезные ссылки!

Files

  • config/install/system.action.node_save_and_send_mail_action.yml
  • scr/Plugin/Action/SaveAndSendMailAction.php
  • content_mail_actions.module
  • content_mail_actions.info.yml

[module name].info.yml

Для всех типов действий, которые мы будем рассматривать, нам необходимо настроить скелет пользовательского модуля. Для этого мы создали папку в папке пользовательских модулей, например, custom_actions, и добавили файл custom_actions.info.yml со следующим кодом. Как упоминалось в предыдущих блог-постах, это сообщит Drupal, что мы добавляем новый модуль.

name: Custom actions
type: module
description: Provides some custom actions.
core_version_requirement: ^8 || ^9
package: Custom

Basic action

Теперь мы можем приступить к созданию нашего действия, сначала мы рассмотрим создание базового действия.

Сначала мы должны убедиться, что внутри вашего пользовательского модуля есть папка с именем "src", а внутри нее папка с именем "Plugin", затем еще одна папка внутри "Plugin" с именем "Action", и мы добавим наши классы действий в папку "Action".

Теперь создайте свой класс (в моем случае файл класса называется SaveAndSendMailAction.php), код является простым действием, которое я создал. Цель этого простого действия - отправлять email самому себе в интерфейс mailhog. Поскольку это простое действие, мы расширяем класс EntityActionBase.

Перед объявлением класса необходимо добавить аннотацию, которая сообщает Drupal, что мы добавляем действие, и мы указываем идентификатор и метку, которые появятся в пользовательском интерфейсе модуля действий. Параметр "type" - это имя сущности, которую вы используете, но если это действие должно применяться ко всем типам сущностей, то его можно оставить пустым.

В функции "execute" у вас есть доступ к сущности / сущностям, которые вы выбрали в представлении, на котором было включено действие. Поэтому в функции "execute" вы выполняете то, что вы хотите, чтобы действие сделало с выбранными сущностями.

Функция "access" гарантирует, что пользователь, желающий выполнить это действие, может выполнить необходимую операцию для типа сущности.

system.action.[action machine name].yml

Мы теперь добавляем конфигурацию для действий, которые мы установили в нашем файле schema yml, упомянутом выше. Это необходимо для того, чтобы при установке модуля конфигурация действий могла быть импортирована, и наши действия были добавлены на сайт. В зависимости от типа действия, которое вы создали, это будет определять, готово ли действие к добавлению в вид и использованию, или требуется дополнительная настройка.

Теперь мы можем добавлять конфигурацию в папки config/install или config/optional внутри модуля. Разница между ними заключается в следующем:

install: Эта папка может содержать файлы конфигурации yml. Все конфигурации будут установлены. Если какая-либо конфигурация не удается установить, модуль не может быть установлен. optional: Эта папка может содержать файлы конфигурации yml. Все конфигурации будут установлены, если это возможно. Если конфигурация имеет недостающие зависимости, она не будет установлена. Установка конфигурации происходит только при установке самого модуля. Для необязательной конфигурации она может устанавливать недостающую конфигурацию при выполнении зависимостей при установке нового модуля.

Ниже приведен файл конфигурации для одного из действий, которое мы добавили через этот блог-пост. Имена файлов этой конфигурации имеют формат system.action.[action_machine_name].yml, чтобы Drupal мог распознать, для какого файла конфигурации он предназначен, и должен импортировать конфигурацию относительно безболезненно, при условии, что в файле yml нет проблем.

langcode: en
status: true
dependencies:
  module:
    - content_mail_actions
id: node_save_and_send_mail_action
label: "Your action name"
type: node
plugin: entity:save_and_send_mail_action:node
configuration: {}

About

Saving an entity and sending a notification by email

Topics

Resources

Stars

Watchers

Forks

Languages