You are here

public function DisableLanguageSettings::buildForm in Disable language 8

Form constructor.

Parameters

array $form: An associative array containing the structure of the form.

\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.

Return value

array The form structure.

Overrides ConfigFormBase::buildForm

File

src/Form/DisableLanguageSettings.php, line 70

Class

DisableLanguageSettings
Class DisableLanguageSettings.

Namespace

Drupal\disable_language\Form

Code

public function buildForm(array $form, FormStateInterface $form_state) {
  $config = $this
    ->config('disable_language.settings');
  $default = $config
    ->get('redirect_override_routes');
  if (is_array($default)) {
    $default = implode("\n", $default);
  }
  $form['help'] = [
    '#type' => 'item',
    '#title' => $this
      ->t('Help'),
    '#markup' => $this
      ->t("As we can't define appropriate cache invalidation, you will have to clear your cache after you save this form."),
  ];
  $form['redirect_override_routes'] = [
    '#type' => 'textarea',
    '#title' => $this
      ->t('Override routes'),
    '#description' => $this
      ->t('Enter route names (one per line) that should redirect to themselves in the correct language instead of the frontpage'),
    '#default_value' => $default,
  ];

  /** @var \Drupal\system\Plugin\Condition\RequestPath $condition */
  $condition = $this->conditionManager
    ->createInstance('request_path');
  $form_state
    ->set([
    'conditions',
    'request_path',
  ], $condition);
  $form['exclude_request_path'] = $condition
    ->buildConfigurationForm([], $form_state);
  foreach ($form['exclude_request_path'] as $form_element_name => $form_element_value) {
    if (isset($form['exclude_request_path'][$form_element_name]['#default_value'])) {
      $form['exclude_request_path'][$form_element_name]['#default_value'] = $config
        ->get('exclude_request_path')[$form_element_name] ?? NULL;
    }
  }
  $form['exclude_request_path']['pages']['#title'] = $this
    ->t('Exclude by path');
  $form['#tree'] = TRUE;
  return parent::buildForm($form, $form_state);
}