logo

Dodatni tipovi blokova (EBT) - Novo iskustvo rada sa Layout Builder-om❗

Dodatni tipovi blokova (EBT) – stilizovani, prilagodljivi tipovi blokova: slajdšouvi, kartice sa tabovima, kartice, akordeoni i mnogi drugi. Ugrađena podešavanja za pozadinu, DOM Box, javascript dodatke. Iskusite budućnost kreiranja rasporeda već danas.

Demo EBT moduli Preuzmite EBT module

❗Dodatni tipovi pasusa (EPT) – Novo iskustvo rada sa pasusima

Dodatni tipovi pasusa (EPT) – analogni skup modula zasnovan na pasusima.

Demo EPT moduli Preuzmite EPT module

Scroll
19/06/2025, by Ivan

Konfiguracioni objekti mogu da deklarišu zavisnosti. Zavisnost može biti modul, tema ili entitet.

Zavisnosti konfiguracionog objekta moraju biti instalirane pre nego što konfiguracioni objekat može biti instaliran. Ako zavisnosti nisu prisutne i instalirane na sajtu, konfiguracioni objekat neće moći biti instaliran. Modul treba da deklariše u svom YAML fajlu sa informacijama o modulu i zavisnosti tema koje će njegovi konfiguracioni objekti zahtevati.

Uopšteno, programeri modula ne moraju da brinu o deklarišanju zavisnosti za konfiguracione objekte. Proširujući osnovne klase konfiguracionih entiteta iz jezgra i praveći dodatke koristeći standardne dobavljače API plugina, zavisnosti će biti izračunate i deklarisane automatski.

Pregled

Zavisnosti konfiguracionog objekta se deklarišu pomoću ključa config_dependencies u definiciji konfiguracionog objekta. Ključevi ovog niza mogu biti sledeći:

  • content
  • config
  • module
  • theme

 

Konfiguracioni objekti definišu svoje zavisnosti implementirajući \Drupal\Core\Config\Entity\ConfigEntityInterface::calculateDependencies(). Ova metoda treba biti pozvana iz implementacije konfiguracionog objekta \Drupal\Core\Entity\EntityInterface::preSave(). Implementacije bi trebalo da koriste pomoćnu metodu \Drupal\Core\Config\Entity\ConfigEntityBase::addDependency() za dodavanje zavisnosti. Sve implementacije u jezgru pozivaju roditeljsku metodu \Drupal\Core\Config\Entity\ConfigEntityBase::calcDependencies(), koja resetuje zavisnosti i pruža implementaciju za određivanje dobavljača modula plugina za konfiguracione objekte koji implementiraju \Drupal\Core\Entity\EntityWithPluginCollectionInterface. Pogledajte API dokumentaciju menadžera zavisnosti konfiguracije za detaljnije informacije o ovim klasama i metodama.

Kako se računaju zavisnosti konfiguracije

Računanje zavisnosti na osnovu svojstava konfiguracionog objekta

@todo - pogledajte \Drupal\block\Entity\Block::calculateDependencies

Računanje zavisnosti na osnovu drugih konfiguracionih objekata

@todo - pogledajte \Drupal\entity\EntityDisplayBase::calculateDependencies (ovo je vrlo složen primer)

Računanje zavisnosti u pluginovima i njihovim izvedenicama

@todo pogledajte Drupal\Core\Config\Entity\ConfigEntityBase::calculateDependencies - imajte u vidu da objekat config implementira EntityWithPluginBagInterface, nakon čega se automatski dodaje zavisnost na modul koji obezbeđuje plugin.

Definicije izvedenih plugina se dobijaju iz osnovnog plugina. Na primer, \Drupal\system\Plugin\Derivative\SystemMenuBlock je izveden iz plugina \Drupal\system\Plugin\Block\SystemMenuBlock. Sistem blokova menija zahteva uspostavljanje veze zavisnosti između konfiguracionog objekta blok modula i konfiguracionog objekta menija koji obezbeđuje blok.

\Drupal\system\Plugin\Block\SystemMenuBlock implementira metodu getDerivativeDefinitions(). Dakle, izvedeni blokovi menija, poput bloka menija za podnožje Bartik teme, zavise od odgovarajućeg entiteta \Drupal\system\Entity\Menu.

public function getDerivativeDefinitions($base_plugin_definition) {
  foreach ($this->menuStorage->loadMultiple() as $menu => $entity) {
    $this->derivatives[$menu] = $base_plugin_definition;
    $this->derivatives[$menu]['admin_label'] = $entity->label();
    $this->derivatives[$menu]['config_dependencies']['config'] = array($entity->getConfigDependencyName());
  }
  return $this->derivatives;
}

U gornjem kodu, svaka izvedena instanca sistemskog menija dobija zavisnost konfiguracionog objekta koji obezbeđuje meni bloka. Da bi se dobilo ime entiteta koje treba koristiti za identifikaciju zavisnosti konfiguracije, poziva se metoda entiteta getConfigDependencyName(). Ime objekta je složeni string i ne bi trebalo da bude hardkodirano tamo gde se deklariše zavisnost.

Svojstvo config_dependencies takođe može biti deklarisano kao deo definicije plugina. Međutim, zavisnosti konfiguracionog objekta su uglavnom dinamičke vrednosti i stoga se računaju. Deklaracija statičke zavisnosti u definiciji plugina je retka i treba je izbegavati.

Primorane zavisnosti

@todo - pogledajte https://www.drupal.org/node/2404447.

Pogledajte Upravljanje konfiguracijom u Drupalu 8 za dodatne informacije o izvozima i uvozima konfiguracionih fajlova.

Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.