page_cache_form_test.module

Same filename in other branches
  1. 9 core/modules/page_cache/tests/modules/page_cache_form_test.module
  2. 8.9.x core/modules/page_cache/tests/modules/page_cache_form_test.module
  3. 11.x core/modules/page_cache/tests/modules/page_cache_form_test.module

Provides functionality for testing form caching.

File

core/modules/page_cache/tests/modules/page_cache_form_test.module

View source
<?php


/**
 * @file
 * Provides functionality for testing form caching.
 */
use Drupal\Core\Form\FormStateInterface;

/**
 * Implements hook_form_FORM_ID_alter().
 */
function page_cache_form_test_form_page_cache_form_test_alter(&$form, FormStateInterface $form_state, $form_id) {
    // This runs earlier than system_form_alter() so we fore-go the immutability
    // check to the process callback, by which time system_form_alter() has run.
    $form['#process'][] = 'page_cache_form_test_form_page_cache_form_test_process';
}

/**
 * Process callback to check immutability.
 */
function page_cache_form_test_form_page_cache_form_test_process($form, FormStateInterface $form_state) {
    if (isset($form_state->getBuildInfo()['immutable']) && $form_state->getBuildInfo()['immutable']) {
        $form['#suffix'] = 'Immutable: TRUE';
    }
    else {
        $form['#suffix'] = 'Immutable: FALSE';
    }
    return $form;
}

/**
 * Implements hook_module_implements_alter().
 */
function page_cache_form_test_module_implements_alter(&$implementations, $hook) {
    if ($hook === 'form_alter' && \Drupal::state()->get('page_cache_bypass_form_immutability', FALSE)) {
        // Disable system_form_alter
        unset($implementations['system']);
    }
}

Functions

Title Deprecated Summary
page_cache_form_test_form_page_cache_form_test_alter Implements hook_form_FORM_ID_alter().
page_cache_form_test_form_page_cache_form_test_process Process callback to check immutability.
page_cache_form_test_module_implements_alter Implements hook_module_implements_alter().

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