function TasksInterface::getTasks
Returns an array of tasks to be performed by an installation profile.
Any tasks you define here will be run, in order, after the installer has finished the site configuration step but before it has moved on to the final import of languages and the end of the installation. This is invoked by install_tasks(). You can have any number of custom tasks to perform during this phase.
Each task you define here corresponds to a callback method which you must separately define and which is called when your task is run. This method will receive the global installation state variable, $install_state, as input, and has the opportunity to access or modify any of its settings. See the install_state_defaults() function in the installer for the list of $install_state settings used by Drupal core.
At the end of your task method, you can indicate that you want the installer to pause and display a page to the user by returning any themed output that should be displayed on that page (but see below for tasks that use the form API or batch API; the return values of these task methods are handled differently). You should also use #title within the task callback method to set a custom page title. For some tasks, however, you may want to only do some processing and pass control to the next task without ending the page request; to indicate this, do not send back a return value from your task method at all. This can be used, for example, by installation profiles that need to configure certain site settings in the database without obtaining any input from the user.
The task method is treated specially if it defines a form or requires batch processing; in that case, you should return either the form API definition or batch API array, as appropriate. See below for more information on the 'type' key that you must define in the task definition to inform the installer that your task falls into one of those two categories. It is important to use these APIs directly, since the installer may be run non-interactively (for example, via a command line script), all in one cli request; in that case, the installer will automatically take care of submitting forms and processing batches correctly for both types of installations. You can inspect the $install_state['interactive'] boolean to see whether or not the current installation is interactive, if you need access to this information.
Remember that a user installing Drupal interactively will be able to reload an installation page multiple times, so you should use \Drupal::state() to store any data that you may need later in the installation process. Any temporary state must be removed using \Drupal::state()->delete() before your last task has completed and control is handed back to the installer.
Parameters
array $install_state: An array of information about the current installation state.
Return value
array A keyed array of tasks the profile will perform during the final stage of the installation. Each key represents the name of a method (usually a method defined by this profile, although that is not strictly required) that is called when that task is run. The values are associative arrays containing the following key-value pairs (all of which are optional):
- display_name: The human-readable name of the task. This will be displayed to the user while the installer is running, along with a list of other tasks that are being run. Leave this unset to prevent the task from appearing in the list.
- display: This is a boolean which can be used to provide finer-grained control over whether or not the task will display. This is mostly useful for tasks that are intended to display only under certain conditions; for these tasks, you can set 'display_name' to the name that you want to display, but then use this boolean to hide the task only when certain conditions apply.
- type: A string representing the type of task. This parameter has three
possible values:
- normal: (default) This indicates that the task will be treated as a regular callback method, which does its processing and optionally returns HTML output.
- batch: This indicates that the task method will return a batch API definition suitable for batch_set() or an array of batch definitions suitable for consecutive batch_set() calls. The installer will then take care of automatically running the task via batch processing.
- form: This indicates that the task method will return a standard form API definition (and separately define validation and submit handlers, as appropriate). The installer will then take care of automatically directing the user through the form submission process.
- run: A constant representing the manner in which the task will be run.
This parameter has three possible values:
- INSTALL_TASK_RUN_IF_NOT_COMPLETED: (default) This indicates that the task will run once during the installation of the profile.
- INSTALL_TASK_SKIP: This indicates that the task will not run during the current installation page request. It can be used to skip running an installation task when certain conditions are met, even though the task may still show on the list of installation tasks presented to the user.
- INSTALL_TASK_RUN_IF_REACHED: This indicates that the task will run on each installation page request that reaches it. This is rarely necessary for an installation profile to use; it is primarily used by the Drupal installer for bootstrap-related tasks.
- function: Normally this does not need to be set, but it can be used to force the installer to call a different method when the task is run (rather than the method whose name is given by the array key). This could be used, for example, to allow the same method to be called by two different tasks.
See also
Drupal\Core\Extension\Install\TaskAlterInterface
1 method overrides TasksInterface::getTasks()
- TestingInstallTasksInterfaceTasks::getTasks in core/
profiles/ tests/ testing_install_tasks_interface/ src/ Install/ Tasks/ TestingInstallTasksInterfaceTasks.php - Implements getTasks.
File
-
core/
lib/ Drupal/ Core/ Extension/ Install/ TasksInterface.php, line 119
Class
- TasksInterface
- Methods for adding or altering tasks during the installation of Drupal.
Namespace
Drupal\Core\Extension\InstallCode
public function getTasks(array &$install_state) : array;
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.