logo

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

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

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

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

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

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

Scroll

Տվյալների բազայի կապի օբյեկտի ստեղծում

19/06/2025, by Ivan

Տվյալների բազայի հետ փոխգործակցությունը պետք է իրականացվի տվյալների բազայի կապի օբյեկտի միջոցով։ Կա մի քանի դեպք, որոնք պահանջում են հատուկ ուշադրություն՝

1. Պրոցեդուրալ կոդում, այսինքն *.module, *.inc կամ սցենարային ֆայլերում:
Տվյալների բազայի կապի օբյեկտի օրինակ ստեղծելու լավագույն եղանակը Service Container-ի միջոցով է։

Օրինակ՝

$database = \Drupal::database();
// Կամ
$database = \Drupal::service('database');

Սա կհանգեցնի տվյալների բազայի կապի օբյեկտին, որը կարգավորված է հիմնական տվյալների բազայի հետ կապ հաստատելու համար, ինչպես սահմանված է settings.php կոնֆիգուրացիոն ֆայլում։

2. Պատմական և տեխնիկական պատճառներով \Drupal::database() մեթոդի վերադարձվող տիպը \Drupal\Core\Database\Connection է, ուստի այն երբեմն կոչվում է $connection։
 
3. OOP կոդում՝

  • Մի շարք դեպքերում տվյալների բազայի կապի օբյեկտը կարող է արդեն հասանելի լինել որպես ընթացիկ դասի անդամ։ Օրինակ՝ շատ պլագիններ և ծառայություններ ունեն $this->database (կամ $this->connection)՝ որպես տվյալների բազայի կապի օբյեկտ։
  • Եթե հնարավոր է, օգտագործեք Դեպենդենսի Ինջեկշն (DI)՝ օգտագործելու համար @database ծառայությունը կամ $container->get('database')՝ տվյալների բազայի կապը ներառելու համար։
  • Եթե դա հնարավոր չէ (օրինակ՝ դասի σταտիկ մեթոդում), օգտագործեք \Drupal::database()։
  • Եթե ծառայությունները դեռ հասանելի չեն, \Drupal\Core\Database\Database::getConnection() կարող է ստանալ տվյալների բազայի կապը։
  • Մոդուլային թեստերում չունենք բեռնված կոր կամ ներառված կոնտեյներ։ Մոդուլային թեստերը սովորաբար չպետք է դիմեն տվյալների բազային։ Թեստը, որն ունի տվյալների բազայի ծառայության պահանջ, պետք է փոխակերպվի կորի թեստի։
  • Կորի դասերում և ֆունկցիոնալ թեստերում ունենք $this->container->get('database')։ Որոշ թեստերի հեղինակներ կարող են հայտնաբերել, որ թեստի դասի կողմից նշված կոնտեյները չի համաժամացվի ընթացիկ կոնտեյների հետ ֆունկցիոնալ թեստի ընթացքում։ Այդ դեպքում թեստի հեղինակը կարող է կանչել $this->rebuildContainer() և ապա կրկին օգտվել $this->container->get('database')։

 

Տվյալների բազայի այլ կապի օգտագործում

Եթե ձեր կայքը օգտագործում է մի քանի տվյալների բազաներ, և ցանկանում եք հարցում կատարել ստանդարտից տարբեր տվյալների բազայի վրա, օգտագործեք Database::getConnection()։ Օրինակ՝

$connection = \Drupal\Core\Database\Database::getConnection('default', 'other_database');

Սա կապ կստեղծի settings.php ֆայլում հետևյալով սահմանված տվյալների բազայի հետ՝

$databases['other_database']['default']

 

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.