You can see module hooks are still in a procedural way to utilize a dependent service That's why we have a static Drupal Class , it can get a service in a procedural context. How to access a service in module hooks? Drupal::service('{service id}') or service accessors like Drupal::request(), Drupal::currentUser(), Drupal::entityManager(). It is providing a uniform way of getting any services inside hooks and it eases the transition from procedural code to injected oops code. How a container get services in drupal? The container is built by the kernel and passed to the static Drupal Class and the container gets all the services from the system by the below methods 1. \Drupal\Core\CoreServiceProvider 2. the service providers of enabled modules 3. any other service providers defined in $GLOBALS['conf']['container_service_providers']. How you can improve the dependent service access from module ? function hook_do_stuff() { $lock = lock()
Redirection In Drupal 8 In this post we can learn about the ways we can make redirect in Drupal 8. You can make a custom redirect according to the context in many ways. Form Redirect We can use the formstate object to redirect from form. Currently below two methods are available from Drupal\Core\Form formstate to build a \Symfony\Component\HttpFoundation\RedirectResponse for redirection. 1) setRedirect function setRedirect($route_name, array $route_parameters = [], array $options = []) This method will call the setRedirectUrl function inside it. 1) route_parameters - optional argument 2) route_name - The name of the route name. 3) options - (optional) An associative array of additional URL options, with the * following elements: * - 'query': An array of query key/value-pairs (without any URL-encoding) * to append to the URL . * - 'fragment': A fragment identifier (named anchor) to append to the URL. * Do not incl