prepopulate-8.x-2.3/tests/modules/prepopulate_test/src/Form/PrepopulateTestForm.php
tests/modules/prepopulate_test/src/Form/PrepopulateTestForm.php
<?php
namespace Drupal\prepopulate_test\Form;
use Drupal\Component\Render\MarkupInterface;
use Drupal\Core\Datetime\DrupalDateTime;
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Form\FormBase;
use Drupal\Core\Form\FormStateInterface;
/**
* Test artifact for prepopulating a form.
*/
class PrepopulateTestForm extends FormBase {
/**
* {@inheritdoc}
*/
public function getFormId(): string {
return 'prepopulate_test_form';
}
/**
* {@inheritdoc}
*/
public function buildForm(array $form, FormStateInterface $form_state): array {
$form['checkboxes'] = [
'#type' => 'checkboxes',
'#title' => $this->t('Checkboxes'),
'#options' => [
'black' => $this->t('Black'),
'blue' => $this->t('Blue'),
'green' => $this->t('Green'),
'red' => $this->t('Red'),
'white' => $this->t('White'),
'yellow' => $this->t('Yellow'),
],
];
$form['date'] = [
'#type' => 'date',
'#title' => $this->t('Date'),
];
$form['datelist'] = [
'#type' => 'datelist',
'#title' => $this->t('Datelist'),
];
$form['datetime'] = [
'#type' => 'datetime',
'#title' => $this->t('Datetime'),
];
$form['entity_autocomplete'] = [
'#type' => 'entity_autocomplete',
'#target_type' => 'node',
'#title' => $this->t('Node Autocomplete'),
];
$form['entity_autocreate'] = [
'#type' => 'entity_autocomplete',
'#target_type' => 'taxonomy_term',
'#title' => $this->t('Term Autocreate'),
'#autocreate' => [
'bundle' => 'tags',
],
];
$form['email'] = [
'#type' => 'email',
'#title' => $this->t('Email'),
];
$form['machine_name'] = [
'#type' => 'machine_name',
'#title' => $this->t('Machine Name'),
'#machine_name' => ['exists' => '\Drupal\views\Views::getView'],
'#required' => FALSE,
];
$form['number'] = [
'#type' => 'number',
'#title' => $this->t('Number'),
];
$form['path'] = [
'#type' => 'path',
'#title' => $this->t('Path'),
];
$form['radios'] = [
'#type' => 'radios',
'#title' => $this->t('Radios'),
'#options' => [
'africa' => $this->t('Africa'),
'antarctica' => $this->t('Antarctica'),
'asia' => $this->t('Asia'),
'australia' => $this->t('Australia'),
'europe' => $this->t('Europe'),
'north america' => $this->t('North America'),
'south america' => $this->t('South America'),
],
];
$form['telephone'] = [
'#type' => 'tel',
'#title' => $this->t('Telephone'),
];
$form['textarea'] = [
'#type' => 'textarea',
'#title' => $this->t('Textarea'),
];
$form['textfield'] = [
'#type' => 'textfield',
'#title' => $this->t('Textfield'),
];
$form['select'] = [
'#type' => 'select',
'#title' => $this->t('Select'),
'#options' => [
'north' => $this->t('North'),
'south' => $this->t('South'),
'east' => $this->t('East'),
'west' => $this->t('West'),
],
];
$form['url'] = [
'#type' => 'url',
'#title' => $this->t('Url'),
];
$form['submit'] = [
'#type' => 'submit',
'#value' => $this->t('Submit'),
];
$form['#cache']['max-age'] = 0;
return $form;
}
/**
* {@inheritdoc}
*/
public function submitForm(array &$form, FormStateInterface $form_state): void {
// Display result.
foreach ($form_state->getValues() as $key => $value) {
if ($value instanceof MarkupInterface) {
$value = (string) $value;
}
elseif ($value instanceof DrupalDateTime) {
$value = (string) $value;
}
elseif (isset($value['entity']) && $value['entity'] instanceof EntityInterface) {
$entity = $value['entity'];
$entity->save();
$value = "{$entity->label()} ({$entity->id()})";
}
else {
$value = var_export($value, TRUE);
}
$this->messenger()->addStatus($key . ': ' . $value);
}
}
}
