function PerformanceForm::buildForm

Same name and namespace in other branches
  1. 9 core/modules/system/src/Form/PerformanceForm.php \Drupal\system\Form\PerformanceForm::buildForm()
  2. 8.9.x core/modules/system/src/Form/PerformanceForm.php \Drupal\system\Form\PerformanceForm::buildForm()
  3. 10 core/modules/system/src/Form/PerformanceForm.php \Drupal\system\Form\PerformanceForm::buildForm()

Overrides ConfigFormBase::buildForm

File

core/modules/system/src/Form/PerformanceForm.php, line 106

Class

PerformanceForm
Configure performance settings for this site.

Namespace

Drupal\system\Form

Code

public function buildForm(array $form, FormStateInterface $form_state) {
    $form['#attached']['library'][] = 'system/drupal.system';
    $form['caching'] = [
        '#type' => 'details',
        '#title' => $this->t('Caching'),
        '#open' => TRUE,
    ];
    // Identical options to the ones for block caching.
    // @see \Drupal\Core\Block\BlockBase::buildConfigurationForm()
    $period = [
        0,
        60,
        180,
        300,
        600,
        900,
        1800,
        2700,
        3600,
        10800,
        21600,
        32400,
        43200,
        86400,
    ];
    $period = array_map([
        $this->dateFormatter,
        'formatInterval',
    ], array_combine($period, $period));
    $period[0] = '<' . $this->t('no caching') . '>';
    $form['caching']['page_cache_maximum_age'] = [
        '#type' => 'select',
        '#title' => $this->t('Browser and proxy cache maximum age'),
        '#config_target' => 'system.performance:cache.page.max_age',
        '#options' => $period,
        '#description' => $this->t('This is used as the value for max-age in Cache-Control headers.'),
    ];
    $form['caching']['internal_page_cache'] = [
        '#markup' => $this->t('Drupal provides an <a href=":module_enable">Internal Page Cache module</a> that is recommended for small to medium-sized websites.', [
            ':module_enable' => Url::fromRoute('system.modules_list')->toString(),
        ]),
        '#access' => !$this->moduleHandler
            ->moduleExists('page_cache'),
    ];
    $directory = 'assets://';
    $is_writable = is_dir($directory) && is_writable($directory);
    $disabled = !$is_writable;
    $disabled_message = '';
    if (!$is_writable) {
        $disabled_message = ' ' . $this->t('<strong class="error">Set up the <a href=":file-system">optimized assets file system path</a> to make these optimizations available.</strong>', [
            ':file-system' => Url::fromRoute('system.file_system_settings')->toString(),
        ]);
    }
    $form['bandwidth_optimization'] = [
        '#type' => 'details',
        '#title' => $this->t('Bandwidth optimization'),
        '#open' => TRUE,
        '#description' => $this->t('External resources can be optimized automatically, which can reduce both the size and number of requests made to your website.') . $disabled_message,
    ];
    $form['bandwidth_optimization']['preprocess_css'] = [
        '#type' => 'checkbox',
        '#title' => $this->t('Aggregate CSS files'),
        '#config_target' => 'system.performance:css.preprocess',
        '#disabled' => $disabled,
    ];
    $form['bandwidth_optimization']['preprocess_js'] = [
        '#type' => 'checkbox',
        '#title' => $this->t('Aggregate JavaScript files'),
        '#config_target' => 'system.performance:js.preprocess',
        '#disabled' => $disabled,
    ];
    return parent::buildForm($form, $form_state);
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.