'checkbox', '#title' => t('Use redirection'), ]; $form['destination'] = [ '#type' => 'textfield', '#title' => t('Redirect destination'), '#states' => [ 'visible' => [ ':input[name="redirection"]' => ['checked' => TRUE], ], ], ]; $form['submit'] = [ '#type' => 'submit', '#value' => t('Submit'), ]; return $form; } /** * {@inheritdoc} */ public function submitForm(array &$form, FormStateInterface $form_state) { if (!$form_state->isValueEmpty('redirection')) { if (!$form_state->isValueEmpty('destination')) { // The destination is a random URL, so we can't use routed URLs. // @todo Revist this in https://www.drupal.org/node/2418219. $form_state->setRedirectUrl(Url::fromUserInput('/' . $form_state->getValue('destination'))); } } else { $form_state->disableRedirect(); } } }