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;
}
hàm tĩnh công khai getSubscribeEvents() {
trở lại [
Sự kiện cấu hình::PRESAVE => 'configPreSave'
];
}
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.