Needs review
Project:
Drupal core
Version:
main
Component:
documentation
Priority:
Normal
Category:
Plan
Assigned:
Unassigned
Reporter:
Created:
13 Jan 2023 at 16:08 UTC
Updated:
23 Apr 2025 at 12:36 UTC
Jump to comment: Most recent
Came up during #2862564: Move Custom block library to Content when changing a route path need some way to deprecate the old one
Internal path
Add a route for the deprecated path. Name the route the same at the original adding ".bc" to the end. Set the path to the deprecated path. Add a controller, naming it to identify it as a redirect. Create the controller. The controller includes the
@trigger_error('...', E_USER_DEPRECATED)and the necessary logic to perform the redirect.For example:
# @todo Deprecate this route once # https://www.drupal.org/project/drupal/issues/3159210 is fixed, or remove # it in Drupal 11. # @see https://www.drupal.org/node/3320855 entity.block_content_type.collection.bc: path: '/admin/structure/block/block-content/types' defaults: _controller: '\Drupal\block_content\Controller\BlockContentController::blockContentTypeRedirect' options: _admin_route: TRUE requirements: _permission: 'administer blocks'/** * Provides a redirect to the list of custom block types. * * @return \Symfony\Component\HttpFoundation\RedirectResponse * * @deprecated in drupal:10.1.0 and is removed from drupal:11.0.0. Use * /admin/structure/block-content directly instead of * /admin/structure/block/block-content/types. * * @see https://www.drupal.org/node/3320855 */ public function blockContentTypeRedirect(): RedirectResponse { @trigger_error('The path /admin/structure/block/block-content/types is deprecated in drupal:10.1.0 and is removed from drupal:11.0.0. Use /admin/structure/block-content. See https://www.drupal.org/node/3320855.', E_USER_DEPRECATED); $route = 'entity.block_content_type.collection'; $params = [ '%old_path' => Url::fromRoute("$route.bc")->toString(), '%new_path' => Url::fromRoute($route)->toString(), '%change_record' => 'https://www.drupal.org/node/3320855', ]; $warning_message = $this->t('You have been redirected from %old_path. Update links, shortcuts, and bookmarks to use %new_path.', $params); $this->messenger()->addWarning($warning_message); $this->getLogger('block_content')->warning('A user was redirected from %old_path to %new_path. This redirect will be removed in a future version of Drupal. Update links, shortcuts, and bookmarks to use %new_path. See %change_record for more information.', $params); return $this->redirect($route, [], [], 301); }
Come up with a solution
Ticket out
NA
NA
NA
NA
Comments
Comment #2
benjifisherLet's call this a documentation issue, not "other".
Maybe the end result should be a new section on Drupal deprecation policy, or a new sibling page.
Now that #3333383: Create a redirect for the new Block types path is fixed, we can start drafting the policy.
Comment #4
quietone commentedThe remaining tasks has, "Ticket out". That does that mean?
Comment #5
quietone commentedInternal path
Add a route for the deprecated path. Name the route the same at the original adding ".bc" to the end. Set the path to the deprecated path. Add a controller, naming it to identify it as a redirect. Create the controller. The controller includes the
@trigger_error('...', E_USER_DEPRECATED)and the necessary logic to perform the redirect.For example: