Routing and menus
A core design principle in software development is the separation of concerns. Each piece of information that affects the operation of the system is separated into a distinct section. In Drupal 7, a notable violator of that principle was hook_menu
. It controlled routing, how a URI was mapped to the section of code that would handle the request, menu links, and local tasks, all using a specialized array with 23 different attributes. In Drupal 8 routing, menus and related items have all been separated out into their own components and configuration.
Basic routing
A route is a way for Drupal to determine which system should be responsible for returning content to a request. For example, when it receives a request for /node
, Drupal is able to match this to the home page and return the current list of content. Routes are defined in the {module}.routing.yml
file inside the module directory. At its most basic, that file looks like:
mastering_drupal_8.test_page: path: 'mastering_drupal_8...