niobi-8.x-2.0-alpha4/modules/niobi_admin/src/Form/NiobiAdminSettingsForm.php

modules/niobi_admin/src/Form/NiobiAdminSettingsForm.php
<?php

namespace Drupal\niobi_admin\Form;

use Drupal\Core\Form\ConfigFormBase;
use Drupal\Core\Form\FormStateInterface;
use Drupal\niobi_admin\Utilities\NiobiAdminUtilities;

/**
 * Class NiobiAdminSettingsForm.
 */
class NiobiAdminSettingsForm extends ConfigFormBase {

  /**
   * {@inheritdoc}
   */
  public function getFormId() {
    return 'niobi_admin_settings';
  }

  /**
   * {@inheritdoc}
   */
  protected function getEditableConfigNames() {
    return ['niobi_admin.settings'];
  }

  /**
   * Defines the settings form for Niobi Research Center.
   *
   * @param array $form
   *   An associative array containing the structure of the form.
   * @param \Drupal\Core\Form\FormStateInterface $form_state
   *   The current state of the form.
   *
   * @return array
   *   Form definition array.
   */
  public function buildForm(array $form, FormStateInterface $form_state) {
    $options = NiobiAdminUtilities::getSettingsOptions('form');
    $config = $this->config('niobi_admin.settings');

    $form['niobi'] = [
      '#type' => 'vertical_tabs',
    ];

    foreach($options as $key => $item) {
      foreach ($item as $form_key => $form_item) {
        $form[$form_key] = $form_item;
        $form[$form_key]['#group'] = 'niobi';
      }
    }

    $form['submit'] = [
      '#type' => 'submit',
      '#value' => 'Submit'
    ];
    return $form;
  }

  /**
   * Form submission handler.
   *
   * @param array $form
   *   An associative array containing the structure of the form.
   * @param \Drupal\Core\Form\FormStateInterface $form_state
   *   The current state of the form.
   */
  public function submitForm(array &$form, FormStateInterface $form_state) {
    $config = $this->config('niobi_admin.settings');
    // Clear old data
    $old_data = $config->getRawData();
    foreach ($old_data as $key => $value) {
      $config->clear($key);
    }

    // Set the new data
    $settings = array_diff(array_keys($form_state->getValues()), ['submit', 'form_build_id', 'form_token', 'form_id', 'op', 'niobi__active_tab']);
    foreach ($settings as $key) {
      $form_val = $form_state->getValue($key);
      $k = str_replace('__', '.', $key);
      $config->set($k, $form_val);
      $config->save();
    }
    // Some items require a cache clear.
    drupal_flush_all_caches();
    // We are done, show the finish message.
    \Drupal::messenger()->addMessage('The configuration options have been saved');
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc