install_get_form

install_get_form($form_id, array &$install_state)

Builds and processes a form for the installer environment.

Ensures that FormBuilder does not redirect after submitting a form, since the installer uses a custom step/flow logic via install_run_tasks().

Parameters

string|array $form_id: The form ID to build and process.

array $install_state: The current state of the installation.

Return value

array|null A render array containing the form to render, or NULL in case the form was successfully submitted.

Throws

\Drupal\Core\Installer\Exception\InstallerException

File

core/includes/install.core.inc, line 884
API functions for installing Drupal.

Code

function install_get_form($form_id, array &$install_state) {
  // Ensure the form will not redirect, since install_run_tasks() uses a custom
  // redirection logic.
  $form_state = (new FormState())
    ->addBuildInfo('args', [&$install_state])
    ->disableRedirect();
  $form_builder = \Drupal::formBuilder();
  if ($install_state['interactive']) {
    $form = $form_builder->buildForm($form_id, $form_state);
    // If the form submission was not successful, the form needs to be rendered,
    // which means the task is not complete yet.
    if (!$form_state->isExecuted()) {
      $install_state['task_not_complete'] = TRUE;
      return $form;
    }
  }
  else {
    // For non-interactive installs, submit the form programmatically with the
    // values taken from the installation state.
    $install_form_id = $form_builder->getFormId($form_id, $form_state);
    if (!empty($install_state['forms'][$install_form_id])) {
      $form_state->setValues($install_state['forms'][$install_form_id]);
    }
    $form_builder->submitForm($form_id, $form_state);

    // Throw an exception in case of any form validation error.
    if ($errors = $form_state->getErrors()) {
      throw new InstallerException(implode("\n", $errors));
    }
  }
}
doc_Drupal
2016-10-29 09:21:01
Comments
Leave a Comment

Please login to continue.