Middleware is used in Tomahawk to make it easier to hook into the behaviour of services during a request.

Tomahawk includes middleware for Sessions, Cookies and String Responses.

You could create a middleware for checking if a user was logged in etc.

You add them in to the AppKernel, found in app/AppKernel.php

Creating your own Middleware

First create a class that extends Tomahawk\Middleware\Middleware.

The Middleware requires a boot method. Once you've done that you should have something that looks like:

When the middleware is booted, you have access to the Service container through $this->container.

Next you want to get the Event Dispatcher and listen on the Kernel Events. The following events are available:

  • KernelEvents::REQUEST - occurs at the very beginning of request dispatching.
  • KernelEvents::EXCEPTION - occurs when an uncaught exception appears.
  • KernelEvents::VIEW - event occurs when the return value of a controller is not a Response instance.
  • KernelEvents::CONTROLLER - occurs once a controller was found for handling a request.
  • KernelEvents::RESPONSE - occurs once a response was created for replying to a request.
  • KernelEvents::TERMINATE - occurs once a response was sent.
  • KernelEvents::FINISH_REQUEST - occurs when a response was generated for a request.

We'll use Tomahawk's Tomahawk\HttpCore\Middleware\StringResponse as an example.

This middleware listens on the KernelEvents::VIEW event and converts string responses returned from the controller to a Symfony Response.