3 namespace Drupal\form_test\Form;
5 use Drupal\Core\Form\FormBase;
6 use Drupal\Core\Form\FormStateInterface;
7 use Drupal\Core\Language\LanguageInterface;
8 use Symfony\Component\HttpFoundation\JsonResponse;
11 * Builds a form to test the language select form element.
13 class FormTestLanguageSelectForm extends FormBase {
18 public function getFormId() {
19 return 'form_test_language_select';
25 public function buildForm(array $form, FormStateInterface $form_state) {
26 $form['languages_all'] = [
27 '#title' => t('Languages: All'),
28 '#type' => 'language_select',
29 '#languages' => LanguageInterface::STATE_ALL,
30 '#default_value' => 'xx',
32 $form['languages_configurable'] = [
33 '#title' => t('Languages: Configurable'),
34 '#type' => 'language_select',
35 '#languages' => LanguageInterface::STATE_CONFIGURABLE,
36 '#default_value' => 'en',
38 $form['languages_locked'] = [
39 '#title' => t('Languages: Locked'),
40 '#type' => 'language_select',
41 '#languages' => LanguageInterface::STATE_LOCKED,
43 $form['languages_config_and_locked'] = [
44 '#title' => t('Languages: Configurable and locked'),
45 '#type' => 'language_select',
46 '#languages' => LanguageInterface::STATE_CONFIGURABLE | LanguageInterface::STATE_LOCKED,
47 '#default_value' => 'dummy_value',
49 $form['language_custom_options'] = [
50 '#title' => t('Languages: Custom'),
51 '#type' => 'language_select',
52 '#languages' => LanguageInterface::STATE_CONFIGURABLE | LanguageInterface::STATE_LOCKED,
53 '#options' => ['opt1' => 'First option', 'opt2' => 'Second option', 'opt3' => 'Third option'],
54 '#default_value' => 'opt2',
57 $form['submit'] = ['#type' => 'submit', '#value' => 'Submit'];
64 public function submitForm(array &$form, FormStateInterface $form_state) {
65 $form_state->setResponse(new JsonResponse($form_state->getValues()));