FlagForListForm.php in Flag Lists 8        
                          
                  
                        
  
  
  
  
File
  src/Form/FlagForListForm.php
  
    View source  
  <?php
namespace Drupal\flag_lists\Form;
use Drupal\Core\Entity\EntityForm;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Language\LanguageInterface;
class FlagForListForm extends EntityForm {
  
  public function form(array $form, FormStateInterface $form_state) {
    
    $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;
  }
  
  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) {
      
      $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();
    
    $form_state
      ->setRedirectUrl($flag_for_list
      ->toUrl('collection'));
  }
}