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 Form API-ին և կստեղծենք կարգավորման ձև՝ մոդուլի համար։ Մենք արդեն ստեղծել ենք էջ և բլոկ ցուցադրող մոդուլներ, այժմ եկեք ստեղծենք կարգավորումների ձև, որում կպահպանենք տվյալներ՝ որոշ ծառայության միացման համար։ Ենթադրենք՝ մեզ անհրաժեշտ է կայքում պահպանել API Key և API Client ID, օրինակ՝ Google Maps API-ի համար։

Ծածկագրի օրինակները հասանելի են github-ում.
https://github.com/levmyshkin/drupalbook8

Մենք կարող ենք այս տվյալները պահել settings.php-ում և ավելացնել git-ին։ Սակայն դա անվտանգ չէ. մուտքագրումների տվյալները ավելի լավ է պահել տվյալների բազայում։

Կարգավորումների ձև

Եկեք մեր ձևի համար ավելացնենք նոր երթուղի՝

modules/custom/drupalbook/drupalbook.routing.yml

drupalbook.settings:
  path: '/admin/structure/drupalbook/settings'
  defaults:
    _form: '\Drupal\drupalbook\Form\DrupalbookSettingsForm'
    _title: 'DrupalBook Կարգավորումների ձև'
  requirements:
    _permission: 'administer site configuration'

Ի տարբերություն նախորդ երթուղիների՝ այստեղ defaults-ում նշվում է ոչ թե _controller, այլ _form։ Քանի որ մենք չենք ստեղծում Controller դաս՝ ձևի համար, այլ՝ form դաս։ Եկեք ստեղծենք այս ձևի դասի ֆայլը՝

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

Դուք պետք է ստեղծեք առանձին Form պանակ՝ src պանակի ներսում՝ ձևերի համար։ Սա թույլ է տալիս բաժանել մոդուլի ծածկագիրը ըստ անվանումների։

Ավելացրեք հետևյալ կոդը՝ ֆորմայի համար և մենք կվերլուծենք դրա բոլոր հատվածները՝

<?php

namespace Drupal\drupalbook\Form;

use Drupal\Core\Form\ConfigFormBase;
use Drupal\Core\Form\FormStateInterface;

class DrupalbookSettingsForm extends ConfigFormBase {

  public function getFormId() {
    return 'drupalbook_admin_settings';
  }

  protected function getEditableConfigNames() {
    return [
      'drupalbook.settings',
    ];
  }

  public function buildForm(array $form, FormStateInterface $form_state) {
    $config = $this->config('drupalbook.settings');

    $form['drupalbook_api_key'] = array(
      '#type' => 'textfield',
      '#title' => $this->t('API Key'),
      '#default_value' => $config->get('drupalbook_api_key'),
    );

    $form['drupalbook_api_client_id'] = array(
      '#type' => 'textfield',
      '#title' => $this->t('API Client ID'),
      '#default_value' => $config->get('drupalbook_api_client_id'),
    );

    return parent::buildForm($form, $form_state);
  }

  public function submitForm(array &$form, FormStateInterface $form_state) {
    $this->configFactory->getEditable('drupalbook.settings')
      ->set('drupalbook_api_key', $form_state->getValue('drupalbook_api_key'))
      ->set('drupalbook_api_client_id', $form_state->getValue('drupalbook_api_client_id'))
      ->save();

    parent::submitForm($form, $form_state);
  }

}

...

Սա ամբողջ ձևի դասի կառուցվածքն է։ Այն թույլ է տալիս ստեղծել հեշտ հասանելի և պահպանվող կոնֆիգուրացիաներ։

Սա այս դասի ավարտն է։ Հաջորդ դասում կսովորենք՝ ինչպես ստեղծել բազմաքայլ ձևեր։

Ծածկագրի օրինակները հասանելի են github-ում.
https://github.com/levmyshkin/drupalbook8