Newer
Older
<?php
namespace Drupal\form_test\Form;
use Drupal\Core\Form\FormBase;
Dries Buytaert
committed
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Url;
/**
* Form builder to detect form redirect.
*/
class FormTestRedirectForm extends FormBase {
/**
* {@inheritdoc}
*/
public function getFormId() {
return 'form_test_redirect';
}
/**
* {@inheritdoc}
*/
Dries Buytaert
committed
public function buildForm(array $form, FormStateInterface $form_state) {
$form['redirection'] = [
'#type' => '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}
*/
Dries Buytaert
committed
public function submitForm(array &$form, FormStateInterface $form_state) {
Alex Pott
committed
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 {
Angie Byron
committed
$form_state->disableRedirect();