The Entity module provides two new route providers aimed specifically for entities that support revisions and a bulk delete form option.
If you have an entity that implements the RevisionLogInterface interface, the revision route provider generates a user interface for managing revisions. You then add a revision entry for the router_providers array pointing to the new route provider:
* "route_provider" = {
* "html" = "Drupal\Core\Entity\Routing\DefaultHtmlRouteProvider",
* "revision" = "Drupal\entity\Routing\RevisionRouteProvider",
* },
Then, you just need to define additional items in your entity's links definition:
* links = {
* "revision" = "/messages/{message}/revisions/{message_revision}/view",
* "revision-revert-form" = "/messages/{message_enhanced}/revisions/{message_revision}/revert",
* "version-history" = "/messages/{message}/revisions",
* "canonical" = "/messages/{message}",
* "edit-form" = "/messages/{message}/edit",
* "delete-form" = "/messages/{message}/delete",
* "collection" = "/admin/content/messages"
* }
This reduces the amount of boilerplate code required to implement an Entity. For an implementation example, refer to the EnhancedEntity class in the Entity API's test module entity_module_test.