Tôi đang viết một EventSubscriber cho thực thể cấu hình của mô-đun miền. Mục tiêu của tôi là chèn một số dữ liệu vào cấu hình của nó trong sự kiện preSave (nó trở thành từ bản vá cho D9).
Đây là mã của tôi từ lớp ConfigEventSubscriber của mô-đun tùy chỉnh của tôi:
không gian tên Drupal\custom_module\EventSubscriber;
sử dụng Drupal\Core\Config\ConfigCrudEvent;
sử dụng Drupal\Core\Config\ConfigEvents;
sử dụng Drupal\domain\Entity\Domain;
sử dụng Symfony\Component\EventDispatcher\EventSubscriberInterface;
lớp ConfigEventSubscriber triển khai EventSubscriberInterface {
chức năng công khai __construct (Miền $ tên miền) {
$this->miền = $miền;
}
/**
* {@inheritdoc}
*
* @return mảng
* Tên sự kiện cần lắng nghe và các phương thức sẽ được thực thi.
*/
hàm tĩnh công khai getSubscribeEvents() {
trở lại [
Sự kiện cấu hình::PRESAVE => 'configPreSave'
];
}
/**
* Phản ứng với một đối tượng cấu hình đang được lưu.
*
* @param \Drupal\Core\Config\ConfigCrudEvent $event
* Cấu hình sự kiện thô sơ.
*/
chức năng công khai 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('country_path', 'domain_path', $domain_id);
}
}
}
Đây là tập tin services.yml của tôi:
dịch vụ:
Drupal\custom_module\EventSubscriber\ConfigEventSubscriber:
thẻ:
- { tên: 'event_subscriber' }
đối số: ['@domain.element_manager']
Nó đưa ra một lỗi mà phiên bản DomainElementManager đã cung cấp, nhưng thực thể Miền được mong đợi và nó hợp lý, theo như tôi bao gồm phiên bản $domain của Miền trong cấu trúc của mình. Nhưng, tôi cần lớp Miền để sử dụng các phương thức sau:
addDependency, setThirdPartySettings.
Vì vậy, câu hỏi của tôi là làm thế nào để sử dụng các phương pháp này một cách chính xác trong ngữ cảnh nhiệm vụ của tôi?
Bất kỳ trợ giúp được đánh giá cao.