flag_lists-4.0.x-dev/src/Form/FlagForListForm.php

src/Form/FlagForListForm.php
<?php

namespace Drupal\flag_lists\Form;

use Drupal\Core\Entity\EntityForm;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Language\LanguageInterface;

/**
 * Define the form for Flag For Lists.
 */
class FlagForListForm extends EntityForm {

  /**
   * {@inheritdoc}
   */
  public function form(array $form, FormStateInterface $form_state) {

    /* You will need additional form elements for your custom properties. */
    $form = parent::form($form, $form_state);

    $flagService = \Drupal::service('flaglists');

    $account = \Drupal::currentUser();

    $entity = $this->entity;

    $form['label'] = [
      '#type' => 'textfield',
      '#title' => $this->t('Template name'),
      '#maxlength' => 255,
      '#default_value' => $entity->label(),
      '#description' => $this->t("Template name for the Flag for list."),
      '#required' => TRUE,
      '#weight' => -3,
    ];

    $existing_flags = $flagService->getAllFlagForList(NULL, NULL);

    $options = [];
    foreach ($existing_flags as $flag) {
      if ($flag->hasBaseFlag()) {
        $options[$flag->get('id')] = $flag->label();
      }
    }

    $form['base_flag'] = [
      '#type' => 'select',
      '#title' => $this->t('Template flag'),
      '#required' => TRUE,
      '#default_value' => $entity->getBaseFlag(),
      '#options' => $options,
    ];

    return $form;
  }

  /**
   * {@inheritdoc}
   */
  public function save(array $form, FormStateInterface $form_state) {

    $flag_for_list = $this->entity;
    $is_new = !$flag_for_list->getOriginalId();

    $flag_for_list->setOwner();

    if ($is_new) {
      // Configuration entities need an ID manually set.
      $machine_name = \Drupal::transliteration()
        ->transliterate($flag_for_list->label(),
          LanguageInterface::LANGCODE_DEFAULT, '_');
      $flag_for_list->set('id', mb_strtolower($machine_name));
      $flag_for_list->set('weight', '0');

      $this->messenger()->addMessage(t('The %label flag list has been created.', ['%label' => $flag_for_list->label()]));
    }
    else {
      $this->messenger()->addMessage(t('Updated the %label flag list.', ['%label' => $flag_for_list->label()]));
    }

    $flag_for_list->save();

    // Redirect to edit form so we can populated colors.
    $form_state->setRedirectUrl($flag_for_list->toUrl('collection'));
  }

}

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

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