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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | 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.