You are here

public function CampaignMonitorListSettingsForm::validateForm in Campaign Monitor 8

Same name and namespace in other branches
  1. 8.2 src/Form/CampaignMonitorListSettingsForm.php \Drupal\campaignmonitor\Form\CampaignMonitorListSettingsForm::validateForm()

Edit form validation handler which calls the API to save the information that was entered. This is done in the validation function so we can give better feedback to the user and to prevent the user from having to enter the information once more on failure.

Overrides FormBase::validateForm

File

src/Form/CampaignMonitorListSettingsForm.php, line 244

Class

CampaignMonitorListSettingsForm
Configure campaignmonitor settings for this site.

Namespace

Drupal\campaignmonitor\Form

Code

public function validateForm(array &$form, FormStateInterface $form_state) {
  $list_id = $form_state
    ->getValue('listId');
  $values = $form_state
    ->getValues();

  // Build array with basic information.
  $values = $values['campaignmonitor_list_' . $list_id];
  $options = [
    'Title' => SafeMarkup::checkPlain($values['options']['listname']),
    'UnsubscribePage' => SafeMarkup::checkPlain($values['options']['UnsubscribePage']),
    'ConfirmedOptIn' => $values['options']['ConfirmedOptIn'] ? TRUE : FALSE,
    'ConfirmationSuccessPage' => SafeMarkup::checkPlain($values['options']['ConfirmationSuccessPage']),
  ];
  $result = campaignmonitor_set_extended_list_settings($list_id, $options);
  if ($result != 'success') {
    $form_state
      ->setErrorByName('', $result);
  }

  // Redirect to list overview.
  $url = Url::fromRoute('campaignmonitor.lists');
  $form_state
    ->setRedirectUrl($url);
  parent::validateForm($form, $form_state);
}