Useful form snippets for multiple selections

When building forms it is useful to have widgets that select multiple values for you and enhance UI, if you have large select list I would recommend to use select2 module to make custom form use its widget you should first get an array of elements in a variable, like 

 $countries = $this->countryManager->getList();

then use that in form

    // Build excluded countries.
    $form['general']['excluded_countries'] = [
      '#type' => 'select2',
      '#multiple' => TRUE,
      '#options' => $countries,
      '#title' => $this->t('Shipping countries excluded from Auto Approval'),
      '#default_value' => $config->get('general.excluded_countries'),

so putting this array in  '#options' => $countries,  will make a nice widget for you to select multiple elements from long list.


Other useful tip is to use drupal core entity_autocomplete type of form field, which will make an autocomplete field where you can select any entity from autocomplete

    $form['terms'] = [
      '#type' => 'entity_autocomplete',
      '#target_type' => 'node',
      '#title' => $this->t('Terms'),
      '#description' => $this->t('Enter terms'),
      '#maxlength' => 128,
      '#size' => 128,
      '#default_value' => $config->get('terms'),

this will search all nodes with autocomplete and offer you to select ones you want.