Scriu un EventSubscriber pentru entitatea de configurare a modulului de domeniu. Scopul meu este să inserez câteva date în configurația sa la evenimentul preSave (devine din patch-ul pentru D9).
Iată codul meu din clasa ConfigEventSubscriber a modulului meu personalizat:
spațiu de nume Drupal\modul_personalizat\EventSubscriber;
utilizați Drupal\Core\Config\ConfigCrudEvent;
utilizați Drupal\Core\Config\ConfigEvents;
utilizați Drupal\domain\Entity\Domain;
utilizați Symfony\Component\EventDispatcher\EventSubscriberInterface;
clasa ConfigEventSubscriber implementează EventSubscriberInterface {
funcția publică __construct(Domeniu $domeniu) {
$acest->domeniu = $domeniu;
}
/**
* {@inheritdoc}
*
* @return matrice
* Numele evenimentelor de ascultat și metodele care ar trebui executate.
*/
funcție publică statică getSubscribedEvents() {
întoarcere [
ConfigEvents::PRESAVE => 'configPreSave'
];
}
/**
* Reacționează la un obiect de configurare care este salvat.
*
* @param \Drupal\Core\Config\ConfigCrudEvent $event
* Configurare eveniment crud.
*/
funcția publică 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);
}
}
}
Iată fișierul meu services.yml:
Servicii:
Drupal\modul_personalizat\EventSubscriber\ConfigEventSubscriber:
Etichete:
- { nume: 'event_subscriber' }
argumente: ['@domain.element_manager']
Aruncă o eroare acea instanță a DomainElementManager dată, dar entitatea Domain se aștepta și este logic, în măsura în care includ $domain instanța Domain în constructul meu. Dar, am nevoie de clasa Domain pentru a utiliza aceste metode:
addDependency, setThirdPartySettings.
Deci, întrebarea mea este cum să folosesc corect aceste metode în contextul sarcinii mele?
Orice ajutor este apreciat.