Я пишу EventSubscriber для объекта конфигурации модуля домена. Моя цель вставить некоторые данные в его конфиг по событию preSave (это делается из патча для D9).
Вот мой код из класса ConfigEventSubscriber моего пользовательского модуля:
пространство имен Drupal\custom_module\EventSubscriber;
используйте Drupal\Core\Config\ConfigCrudEvent;
используйте Drupal\Core\Config\ConfigEvents;
используйте Drupal\domain\Entity\Domain;
используйте Symfony\Component\EventDispatcher\EventSubscriberInterface;
класс ConfigEventSubscriber реализует EventSubscriberInterface {
публичная функция __construct (домен $ домен) {
$это->домен = $домен;
}
/**
* {@inheritdoc}
*
* @возвратный массив
* Имена событий для прослушивания и методы, которые должны выполняться.
*/
общедоступная статическая функция getSubscribedEvents() {
возвращаться [
ConfigEvents::PRESAVE => 'configPreSave'
];
}
/**
* Реагировать на сохранение объекта конфигурации.
*
* @param \Drupal\Core\Config\ConfigCrudEvent $event
* Конфигурация сырого события.
*/
общедоступная функция configPreSave (ConfigCrudEvent $event) {
$config = $event->getConfig();
$domain_id = $config->getOriginal('id');
if ($config->getStorage()->listAll('domain.record.')) {
$this->domain->addDependencyTrait('module', 'country_path');
$this->domain->setThirdPartySetting('путь_страны', 'путь_домена', $domain_id);
}
}
}
Вот мой файл services.yml:
Сервисы:
Drupal\пользовательский_модуль\EventSubscriber\ConfigEventSubscriber:
теги:
- {имя: 'event_subscriber'}
аргументы: ['@domain.element_manager']
Он выдает ошибку, которую дал экземпляр DomainElementManager, но ожидается объект домена, и это логично, поскольку я включаю экземпляр домена $domain в свою конструкцию. Но мне нужен класс домена для использования этих методов:
addDependency, setThirdPartySettings.
Итак, мой вопрос, как правильно использовать эти методы в контексте моей задачи?
Любая помощь приветствуется.