logo

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

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

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

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

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

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

Scroll
20/06/2025, by Ivan

Menu

Այժմ ասենք, որ մենք ուզում ենք ավելացնել հնարավորություն՝ կայքի ստեղծողին ներմուծելու կոնֆիգուրացիայի մի մասը մեր կસ્ટમ բլոկի յուրաքանչյուր օրինակ համար։ Միշտ հիշեք, որ Drupal 8-ում կայքի բոլոր կոնֆիգուրացիաները կարող են արտահանվել մշակման կայքից և ներմուծվել արտադրական կայք (հայտնի է որպես Կոնֆիգուրացիայի կառավարում)։ Դուք՝ մոդուլների հավաքող, կարող եք նաև տրամադրել նախնական կոնֆիգուրացիա, որպեսզի ավտոմատ լցնի ձևը, երբ կայքի ստեղծողը ստեղծում է նոր բլոկ։

Առկա HelloBlock դասին ավելացրեք հետևյալ «use» օպերատորները՝ արդեն եղածների հետևից՝

use Drupal\Core\Block\BlockPluginInterface;
use Drupal\Core\Form\FormStateInterface;

Թարմացրեք դասի հայտարարումը՝ ներառելու համար նոր «BlockPluginInterface» ի իրականացման օպերատորը՝

class HelloBlock extends BlockBase implements BlockPluginInterface {

Դրանից հետո ավելացրեք հետևյալ մեթոդը դասին։ Կարծես ամբողջական ֆայլն այստեղ է, բայց ուշադրություն դարձրեք, որ ձևի անունը և կոնֆիգուրացիայի անունները չեն համընկնում այս ձեռնարկի հետ։

Այս կոդը միայն կավելացնի ձևը, ձևի մշակումը և արդյունքների պահպանումը հաջորդ էջերում է։

  /**
   * {@inheritdoc}
   */
  public function blockForm($form, FormStateInterface $form_state) {
    $form = parent::blockForm($form, $form_state);

    $config = $this->getConfiguration();

    $form['hello_block_name'] = [
      '#type' => 'textfield',
      '#title' => $this->t('Who'),
      '#description' => $this->t('Who do you want to say hello to?'),
      '#default_value' => isset($config['hello_block_name']) ? $config['hello_block_name'] : '',
    ];

    return $form;
  }

Այս օրինակով ձևը առաջին հերթին սահմանվում է իր ծնողական դասի blockForm()-ի միջոցով՝ $form = parent::blockForm($form, $form_state) հրամանով։ Դրանից հետո մենք ձևին ավելացնում ենք նոր դաշտ։ Այս գործընթացը կոչվում է պոլիմորֆիզմ և օբյեկտային ծրագրավորման (OOP) կարևոր առավելություններից մեկն է։

Հետո մենք պետք է Drupal-ին ասենք պահպանել ձևի արժեքները կոնֆիգուրացիայում այս բլոկի համար։ Ահա օրինակ՝

  /**
   * {@inheritdoc}
   */
  public function blockSubmit($form, FormStateInterface $form_state) {
    parent::blockSubmit($form, $form_state);
    $values = $form_state->getValues();
    $this->configuration['hello_block_name'] = $values['hello_block_name'];
  }

Ձևը դիտելու համար գնացեք admin -> Structure -> Block Layout բաժին, ընտրեք արդեն ավելացված օրինակ և սեղմեք Configure (Hello World) բլոկի համար։

Եթե ցանկանում եք ավելացնել մի քանի ներկայացում՝ օգտագործեք նույն ձևը՝

  /**
   * {@inheritdoc}
   */
  public function blockForm($form, FormStateInterface $form_state) {
    $form = parent::blockForm($form, $form_state);

    $config = $this->getConfiguration();

    $form['hello_block_name'] = [
      '#type' => 'textfield',
      '#title' => $this->t('Who'),
      '#description' => $this->t('Who do you want to say hello to?'),
      '#default_value' => isset($config['hello_block_name']) ? $config['hello_block_name'] : '',
    ];

    $form['actions']['custom_submit'] = [
      '#type' => 'submit',
      '#name' => 'custom_submit',
      '#value' => $this->t('Custom Submit'),
      '#submit' => [[$this, 'custom_submit_form']],
    ];    

    return $form;
  }

Նոր հատուկ ներկայացման գործողություն՝

  /**
   * Custom submit actions.
   */
  public function custom_submit_form($form, FormStateInterface $form_state) {
    $values = $form_state->getValues();
    // Կատարեք անհրաժեշտ գործողություններ։
  }

 

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.