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
19/04/2025, by Ivan

Menu

Այս հոդվածում մենք կշարունակենք ծանոթանալ Drupal 8-ի Form API-ին և կստեղծենք բազմափուլ ձև (multi-step form): Մենք արդեն ստեղծել ենք մոդուլի սովորական կարգավորումների ձևը, իսկ բազմափուլ ձևը ստեղծվում է նույնատիպ ձևով՝ օգտագործելով $form_state՝ ձևի փուլերի միջև տվյալները պահելու համար։

Կոդի օրինակները կարող եք գտնել github-ում՝

https://github.com/levmyshkin/drupalbook8

Բազմափուլ ձևի համար անհրաժեշտ է ձևի class ավելացնել՝

/modules/custom/drupalbook/src/Form/MultiStepForm.php

Այնուհետև մենք կվերլուծենք յուրաքանչյուր կոդի հատվածը։ Իսկ մինչ այդ ստեղծենք երթուղի (route) մեր ձևի համար՝
/modules/custom/drupalbook/drupalbook.routing.yml:

drupalbook.multistep_form:
  path: '/multistep-form'
  defaults:
    _form: '\Drupal\drupalbook\Form\MultiStepForm'
    _title: 'Բաժանորդագրվել նորություններին'
  requirements:
    _permission: 'access content'

Դա կստեղծի ձև /multistep-form հասցեով։

Որպեսզի այս ձևը բացվի մոդալ պատուհանում, պետք է ավելացնել block կամ պարզապես տեքստ՝ հատուկ use-ajax դասով և data-dialog-type="modal" ատրիբուտով, ձևի էջի հղումով։ Կարևոր է միացնել հետևյալ գրադարանները՝ core/drupal.dialog.ajax և core/jquery.form։

Եթե դա անում եք բլոկի միջոցով, կստանաք ձևի բացման կոճակի հետևյալ կոդը՝ modules/custom/drupalbook/src/Plugin/Block/SubscribeFormButton.php-ում։

Ձևը պոպափ պատուհանում կունենա նման տեսք՝

Ես նաև միացրել եմ custom գրադարան՝ drupalbook.libraries.yml ֆայլից՝

modules/custom/drupalbook/drupalbook.libraries.yml

multistep_form:
  css:
    css/multistep_form.css: {}
  js:
    scripts/multistep_form.js: {}
  dependencies:
    - core/jquery
    - core/jquery.once

Անհրաժեշտ է ձևի ոճավորումը և անհրաժեշտ jQuery plugin-ների միացումը։ Դրա համար պետք է ստեղծել հետևյալ ֆայլերը՝

modules/custom/drupalbook/css/multistep_form.css
modules/custom/drupalbook/scripts/multistep_form.js

Կոդի օրինակները կարող եք գտնել github-ում՝
https://github.com/levmyshkin/drupalbook8