public NegotiationBrowserForm::buildForm(array $form, FormStateInterface $form_state)
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
- core/modules/language/src/Form/NegotiationBrowserForm.php, line 62
Class
- NegotiationBrowserForm
- Configure the browser language negotiation method for this site.
Namespace
Drupal\language\Form
Code
public function buildForm(array $form, FormStateInterface $form_state) { $form = array(); // Initialize a language list to the ones available, including English. $languages = $this->languageManager->getLanguages(); $existing_languages = array(); foreach ($languages as $langcode => $language) { $existing_languages[$langcode] = $language->getName(); } // If we have no languages available, present the list of predefined languages // only. If we do have already added languages, set up two option groups with // the list of existing and then predefined languages. if (empty($existing_languages)) { $language_options = $this->languageManager->getStandardLanguageListWithoutConfigured(); } else { $language_options = array( (string) $this->t('Existing languages') => $existing_languages, (string) $this->t('Languages not yet added') => $this->languageManager->getStandardLanguageListWithoutConfigured(), ); } $form['mappings'] = [ '#type' => 'table', '#header' => [ $this->t('Browser language code'), $this->t('Site language'), $this->t('Operations'), ], '#attributes' => ['id' => 'language-negotiation-browser'], '#empty' => $this->t('No browser language mappings available.'), ]; $mappings = $this->language_get_browser_drupal_langcode_mappings(); foreach ($mappings as $browser_langcode => $drupal_langcode) { $form['mappings'][$browser_langcode] = array( 'browser_langcode' => array( '#title' => $this->t('Browser language code'), '#title_display' => 'invisible', '#type' => 'textfield', '#default_value' => $browser_langcode, '#size' => 20, '#required' => TRUE, ), 'drupal_langcode' => array( '#title' => $this->t('Site language'), '#title_display' => 'invisible', '#type' => 'select', '#options' => $language_options, '#default_value' => $drupal_langcode, '#required' => TRUE, ), ); // Operations column. $form['mappings'][$browser_langcode]['operations'] = [ '#type' => 'operations', '#links' => [], ]; $form['mappings'][$browser_langcode]['operations']['#links']['delete'] = [ 'title' => $this->t('Delete'), 'url' => Url::fromRoute('language.negotiation_browser_delete', ['browser_langcode' => $browser_langcode]), ]; } // Add empty row. $form['new_mapping'] = array( '#type' => 'details', '#title' => $this->t('Add a new mapping'), '#tree' => TRUE, ); $form['new_mapping']['browser_langcode'] = array( '#type' => 'textfield', '#title' => $this->t('Browser language code'), '#description' => $this->t('Use language codes as <a href=":w3ctags">defined by the W3C</a> for interoperability. <em>Examples: "en", "en-gb" and "zh-hant".</em>', array(':w3ctags' => 'http://www.w3.org/International/articles/language-tags/')), '#size' => 20, ); $form['new_mapping']['drupal_langcode'] = array( '#type' => 'select', '#title' => $this->t('Site language'), '#options' => $language_options, ); return parent::buildForm($form, $form_state); }
Please login to continue.