Extra Block Types (EBT) - New Layout Builder experience❗

Extra Block Types (EBT) - styled, customizable block types: Slideshows, Tabs, Cards, Accordions and many others. Built-in settings for background, DOM Box, javascript plugins. Experience the future of layout building today.

Demo EBT modules Download EBT modules

❗Extra Paragraph Types (EPT) - New Paragraphs experience

Extra Paragraph Types (EPT) - analogical paragraph based set of modules.

Demo EPT modules Download EPT modules

Scroll

9.10.1. Drupal Fields API: Դաշտի վիջեթ. տվյալների մուտքագրման դաշտեր, դաշտի ձև:

19/04/2025, by Ivan

Menu

Այս ձեռնարկում կծանոթանանք, թե ինչպես է աշխատում Link մոդուլի Field Widget-ը։ Սա վերանայման հոդված է, այնպես որ եթե ցանկանում եք սկսել գրել ձեր սեփական Field Widget-ը, կարող եք անցնել հաջորդ հոդվածներին։

Նախորդ դասում մենք ավելացրինք Link դաշտեր նոդերի և բլոկների համար։ Հիմա եկեք տեսնենք, թե ինչի հիման վրա է կազմվում Link դաշտի ձևը։

Մենք արդեն ծանոթացել ենք Drupal-ում PHP դասերի ավտոլցման համակարգին, և դաշտերի համար գոյություն ունի նաև WidgetBase կոչվող հիմնական դաս՝

core/lib/Drupal/Core/Field/WidgetBase.php

Երբ մոդուլում ստեղծում եք նոր դաս՝ ժառանգված WidgetBase-ից և տեղադրում եք այն src/Plugin/Field/FieldWidget պանակում, դասը ավտոմատ կերպով միացվում է և կարող է օգտագործվել դաշտի համար։ Եկեք դիտարկենք Link դաշտի widget-ի դասը՝

core/modules/link/src/Plugin/Field/FieldWidget/LinkWidget.php

Դասի վերնագրում նշվում է, թե որ դաշտի տիպի համար է նախատեսված տվյալ widget-ը՝

/**
 * Plugin implementation of the 'link' widget.
 *
 * @FieldWidget(
 *   id = "link_default",
 *   label = @Translation("Link"),
 *   field_types = {
 *     "link"
 *   }
 * )
 */

Այս ձևով հնարավոր է ստեղծել նոր դաշտային widget-ներ՝ գոյություն ունեցող դաշտերի համար՝ custom մոդուլների միջոցով։

Հիմա դիտարկենք formElement() մեթոդը, որը հիմնական մեթոդներից մեկն է widget-ում։ Այստեղ Form API-ի միջոցով ավելացվում են ձևի տարրերը։ Link widget-ում կան երեք հիմնական տարրեր՝

$element['title']
$element['uri']
$element['attributes']

Այս դաշտերը հետո օգտագործվում են node կամ block ձևերում տվյալների մուտքագրման համար։ Դաշտերի վրա նաև ավելացվում են վավերացման պայմաններ, օրինակ՝ URI դաշտը պետք է պարունակի վավեր URL կամ կայքի ներքին հղում։

Մեկ այլ կարևոր մեթոդ է settingsForm() մեթոդը։ Այն պատասխանատու է դաշտի կարգավորումների ձևի համար, որը երևում է "Manage form display" էջում՝

link

Մնացած մեթոդները Field Widget-ում պարտադիր չեն։ Մենք այստեղ չենք անդրադառնա բոլոր մեթոդներին, քանի որ դրանք անհրաժեշտ չեն սովորական custom մոդուլ գրելու համար։ Եթե ցանկանաք գրել contribute մոդուլներ, վստահ եմ՝ չեք դժվարանա կարդալ հիմնական դասի մեթոդների նկարագրությունները՝

core/lib/Drupal/Core/Field/WidgetBase.php

Դաշտերի բոլոր widgets-ները կարգավորվում են "Manage form display" էջից՝ յուրաքանչյուր bundle-ի համար առանձին՝

manage form display