hook_install()
Perform setup tasks when the module is installed.
If the module implements hook_schema(), the database tables will be created before this hook is fired.
If the module provides a MODULE.routing.yml or alters routing information these changes will not be available when this hook is fired. If up-to-date router information is required, for example to use \Drupal\Core\Url, then (preferably) use hook_modules_installed() or rebuild the router in the hook_install() implementation.
Implementations of this hook are by convention declared in the module's .install file. The implementation can rely on the .module file being loaded. The hook will only be called when a module is installed. The module's schema version will be set to the module's greatest numbered update hook. Because of this, any time a hook_update_N() is added to the module, this function needs to be updated to reflect the current version of the database schema.
See the Schema API documentation for details on hook_schema and how database tables are defined.
Note that since this function is called from a full bootstrap, all functions (including those in modules enabled by the current page request) are available when this hook is called. Use cases could be displaying a user message, or calling a module function necessary for initial setup, etc.
Please be sure that anything added or modified in this function that can be removed during uninstall should be removed with hook_uninstall().
See also
\Drupal\Core\Extension\ModuleInstaller::install()
Related topics
- Hooks
- Define functions that alter the behavior of Drupal core.
File
- core/lib/Drupal/Core/Extension/module.api.php, line 230
- Hooks related to module and update systems.
Code
function hook_install() { // Create the styles directory and ensure it's writable. $directory = file_default_scheme() . '://styles'; $mode = isset($GLOBALS['install_state']['mode']) ? $GLOBALS['install_state']['mode'] : NULL; file_prepare_directory($directory, FILE_CREATE_DIRECTORY | FILE_MODIFY_PERMISSIONS, $mode); }
Please login to continue.