logo

Լրացուցիչ Բլոկների Տեսակներ (EBT) - Դասավորության Կառուցողի նոր փորձառություն❗

Լրացուցիչ Բլոկների Տեսակներ (EBT) - ձևավորված, կարգավորելի բլոկների տեսակներ՝ սլայդշոուներ, ներդիրներ, քարտեր, բացվող ցանկեր և շատ ուրիշներ։ Ներառված կարգավորումներ՝ ֆոնի, DOM տուփի, JavaScript փլագինների համար։ Փորձեք դասավորությունների կառուցման ապագան արդեն այսօր։

EBT մոդուլների ցուցադրական տարբերակներ Ներբեռնել EBT մոդուլները

❗Լրացուցիչ Պարբերությունների Տեսակներ (EPT) - Պարբերությունների նոր փորձառություն

Լրացուցիչ պարբերության տեսակներ (EPT) - անալոգիական պարբերության վրա հիմնված մոդուլների հավաքակազմ։

EPT մոդուլների ցուցադրական տարբերակներ Ներբեռնել EPT մոդուլները

Scroll

Կոնֆիգուրացիոն օբյեկտի կախվածություններ

19/06/2025, by Ivan

Կոնֆիգուրացիոն օբյեկտները կարող են հայտարարել իրենց կախվածությունները։ Կախվածությունը կարող է լինել մոդուլ, թեմա կամ էնթիթի։

Կոնֆիգուրացիոն օբյեկտի կախվածությունները պետք է լինեն տեղադրված մինչև կոնֆիգուրացիոն օբյեկտի տեղադրումը։ Եթե կախվածությունները բացակայում են կամ չլինեն տեղադրված կայքում, ապա կոնֆիգուրացիոն օբյեկտի տեղադրումը կթերի։ Մոդուլը պետք է իր info YAML ֆայլում հայտարարի այդ մոդուլի և թեմաների կախվածությունները, որոնք անհրաժեշտ կլինեն իր կոնֆիգուրացիոն օբյեկտներին։

Ինքնին՝ մոդուլների ծրագրավորողներին սովորաբար չի պահանջվում կախվածություններ հայտարարել կոնֆիգուրացիոն օբյեկտների համար։ Կորնի կոնֆիգուրացիոն էնթիթների բազային դասերը ընդլայնելով և օգտագործելով API-ի ստանդարտ պլագինների մատակարարներից ստացված պլագինները՝ կախվածությունները հաշվարկվում և հայտարարվում են ավտոմատ։

Ակնարկ

Կոնֆիգուրացիոն օբյեկտի կախվածությունները հայտարարվում են config_dependencies բանալիով կոնֆիգուրացիոն օբյեկտի սահմանման մեջ։ Այս զանգվածի բանալիները կարող են լինել հետևյալները․

  • content
  • config
  • module
  • theme

 

Կոնֆիգուրացիոն օբյեկտները իրենց կախվածությունները սահմանում են \Drupal\Core\Config\Entity\ConfigEntityInterface::calculateDependencies() մեթոդով։ Այս մեթոդը պետք է կանչվի կոնֆիգուրացիոն օբյեկտի \Drupal\Core\Entity\EntityInterface::preSave() իրականացման մեջ։ Իրականացումները պետք է օգտագործեն \Drupal\Core\Config\Entity\ConfigEntityBase::addDependency() օգնության մեթոդը կախվածությունները ավելացնելու համար։ Կորնի բոլոր իրականացումները կանչում են ծնողական \Drupal\Core\Config\Entity\ConfigEntityBase::calcDependencies() մեթոդը, որը զրոյացնում է կախվածությունները և տրամադրում է իրականացում՝ պլագինների մատակարար մոդուլները գտնելու համար, եթե կոնֆիգուրացիոն օբյեկտը իրականացնում է \Drupal\Core\Entity\EntityWithPluginCollectionInterface-ը։

Լրացուցիչ տեղեկությունների համար դիտեք Կոնֆիգուրացիոն կախվածությունների կառավարիչի API փաստաթուղթը՝ այս դասերի և մեթոդների վերաբերյալ։

Ինչպես հաշվարկվում են կոնֆիգուրացիոն կախվածությունները

Կախվածությունների հաշվարկը կոնֆիգուրացիոն օբյեկտի հատկությունների հիման վրա

@todo - դիտեք \Drupal\block\Entity\Block::calculateDependencies

Կախվածությունների հաշվարկը հիմնված մյուս կոնֆիգուրացիոն օբյեկտների վրա

@todo - դիտեք \Drupal\entity\EntityDisplayBase::calculateDependencies (սա շատ բարդ օրինակ է)

Կախվածությունների հաշվարկը պլագինների և դրանց հետագա դասավորությունների համար

@todo դիտեք Drupal\Core\Config\Entity\ConfigEntityBase::calculateDependencies - նշեք, որ եթե կոնֆիգ obj-ը իրականացնում է EntityWithPluginBagInterface, ապա ավտոմատ ավելացվում է կախվածություն պլագինը տրամադրող մոդուլից։

Անօթար պլագինների օրինակները վերցվում են բազային պլագինից։ Օրինակ՝ \Drupal\system\Plugin\Derivative\SystemMenuBlock-ը պլագինի անօթարն է՝ \Drupal\system\Plugin\Block\SystemMenuBlock։ Սիստեմային մենյուի բլոկները պահանջում են, որ լինի կախվածության կապ բլոկի մոդուլի կոնֆիգուրացիոն օբյեկտի և մենյուի կոնֆիգուրացիոն օբյեկտի միջև, որը տրամադրվում է բլոկի միջոցով։

\Drupal\system\Plugin\Block\SystemMenuBlock դասը իրականացնում է getDerivativeDefinitions() մեթոդը։ Արդյունքում՝ Bartik-ի ֆուտերի նման մենյուի բլոկի անօթար բլոկները կախված կլինեն համապատասխան \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;
}

Վերը նշված կոդում յուրաքանչյուր անօթար սիստեմային մենյու բլոկ ստանում է կոնֆիգուրացիոն կախվածություն բլոկ մենյուի տրամադրող օբյեկտից։ Կոնֆիգուրացիայի կախվածության անունը ստացվում է getConfigDependencyName() մեթոդով։ Օբյեկտի անունը կազմված է և չպետք է կոշտ կոդավորվի այնտեղ, որտեղ հայտարարվում է կախվածությունը։

config_dependencies հատկությունը կարող է հայտարարվել նաև որպես պլագինի սահմանման մաս։ Սակայն կոնֆիգուրացիոն օբյեկտների կախվածությունները հիմնականում դինամիկ են և հաշվարկվում են։ Պլագինի սահմանման մեջ ստատիկ կախվածությունների հայտարարումը հազվադեպ է և պետք է խուսափել դրանից։

Անհրաժեշտ կախվածություններ

@todo - դիտեք https://www.drupal.org/node/2404447։

Կարգավորման արտահանման և ներմուծման մասին լրացուցիչ տեղեկությունների համար դիտեք Կոնֆիգուրացիայի կառավարում Drupal 8-ում։

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.