public ContentLanguageSettingsForm::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 FormInterface::buildForm
File
- core/modules/language/src/Form/ContentLanguageSettingsForm.php, line 53
Class
- ContentLanguageSettingsForm
- Configure the content language settings for this site.
Namespace
Drupal\language\Form
Code
public function buildForm(array $form, FormStateInterface $form_state) { $entity_types = $this->entityManager->getDefinitions(); $labels = array(); $default = array(); $bundles = $this->entityManager->getAllBundleInfo(); $language_configuration = array(); foreach ($entity_types as $entity_type_id => $entity_type) { if (!$entity_type instanceof ContentEntityTypeInterface || !$entity_type->hasKey('langcode') || !isset($bundles[$entity_type_id])) { continue; } $labels[$entity_type_id] = $entity_type->getLabel() ? : $entity_type_id; $default[$entity_type_id] = FALSE; // Check whether we have any custom setting. foreach ($bundles[$entity_type_id] as $bundle => $bundle_info) { $config = ContentLanguageSettings::loadByEntityTypeBundle($entity_type_id, $bundle); if (!$config->isDefaultConfiguration()) { $default[$entity_type_id] = $entity_type_id; } $language_configuration[$entity_type_id][$bundle] = $config; } } asort($labels); $form = array( '#labels' => $labels, '#attached' => array( 'library' => array( 'language/drupal.language.admin', ), ), '#attributes' => array( 'class' => 'language-content-settings-form', ), ); $form['entity_types'] = array( '#title' => $this->t('Custom language settings'), '#type' => 'checkboxes', '#options' => $labels, '#default_value' => $default, ); $form['settings'] = array('#tree' => TRUE); foreach ($labels as $entity_type_id => $label) { $entity_type = $entity_types[$entity_type_id]; $form['settings'][$entity_type_id] = array( '#title' => $label, '#type' => 'container', '#entity_type' => $entity_type_id, '#theme' => 'language_content_settings_table', '#bundle_label' => $entity_type->getBundleLabel() ? : $label, '#states' => array( 'visible' => array( ':input[name="entity_types[' . $entity_type_id . ']"]' => array('checked' => TRUE), ), ), ); foreach ($bundles[$entity_type_id] as $bundle => $bundle_info) { $form['settings'][$entity_type_id][$bundle]['settings'] = array( '#type' => 'item', '#label' => $bundle_info['label'], 'language' => array( '#type' => 'language_configuration', '#entity_information' => array( 'entity_type' => $entity_type_id, 'bundle' => $bundle, ), '#default_value' => $language_configuration[$entity_type_id][$bundle], ), ); } } $form['actions']['#type'] = 'actions'; $form['actions']['submit'] = array( '#type' => 'submit', '#value' => $this->t('Save configuration'), '#button_type' => 'primary', ); return $form; }
Please login to continue.