function form_set_cache

7.x form_set_cache($form_build_id, $form, $form_state)
6.x form_set_cache($form_build_id, $form, $form_state)
8.x form_set_cache($form_build_id, $form, $form_state)

Stores a form in the cache.

Related topics

3 calls to form_set_cache()
drupal_process_form in drupal/includes/
Processes a form submission.
drupal_rebuild_form in drupal/includes/
Constructs a new $form from the information in $form_state.
form_test_storage_legacy_handler in drupal/modules/simpletest/tests/form_test.module
Emulate legacy AHAH-style ajax callback.


drupal/includes/, line 556
Functions for form and batch generation and processing.


function form_set_cache($form_build_id, $form, $form_state) {
  // 6 hours cache life time for forms should be plenty.
  $expire = 21600;

  // Ensure that the form build_id embedded in the form structure is the same as
  // the one passed in as a parameter. This is an additional safety measure to
  // prevent legacy code operating directly with form_get_cache and
  // form_set_cache from accidentally overwriting immutable form state.
  if ($form['#build_id'] != $form_build_id) {
    watchdog('form', 'Form build-id mismatch detected while attempting to store a form in the cache.', array(), WATCHDOG_ERROR);

  // Cache form structure.
  if (isset($form)) {
    if ($GLOBALS['user']->uid) {
      $form['#cache_token'] = drupal_get_token();
    cache_set('form_' . $form_build_id, $form, 'cache_form', REQUEST_TIME + $expire);

  // Cache form state.
  if (variable_get('cache', 0) && drupal_page_is_cacheable()) {
    $form_state['build_info']['immutable'] = TRUE;
  if ($data = array_diff_key($form_state, array_flip(form_state_keys_no_cache()))) {
    cache_set('form_state_' . $form_build_id, $data, 'cache_form', REQUEST_TIME + $expire);