protected ContentTranslationRouteSubscriber::alterRoutes(RouteCollection $collection)
Alters existing routes for a specific collection.
Parameters
\Symfony\Component\Routing\RouteCollection $collection: The route collection for adding routes.
Overrides RouteSubscriberBase::alterRoutes
File
- core/modules/content_translation/src/Routing/ContentTranslationRouteSubscriber.php, line 36
Class
- ContentTranslationRouteSubscriber
- Subscriber for entity translation routes.
Namespace
Drupal\content_translation\Routing
Code
protected function alterRoutes(RouteCollection $collection) { foreach ($this->contentTranslationManager->getSupportedEntityTypes() as $entity_type_id => $entity_type) { // Try to get the route from the current collection. $link_template = $entity_type->getLinkTemplate('canonical'); if (strpos($link_template, '/') !== FALSE) { $base_path = '/' . $link_template; } else { if (!$entity_route = $collection->get("entity.$entity_type_id.canonical")) { continue; } $base_path = $entity_route->getPath(); } // Inherit admin route status from edit route, if exists. $is_admin = FALSE; $route_name = "entity.$entity_type_id.edit_form"; if ($edit_route = $collection->get($route_name)) { $is_admin = (bool) $edit_route->getOption('_admin_route'); } $path = $base_path . '/translations'; $route = new Route( $path, array( '_controller' => '\Drupal\content_translation\Controller\ContentTranslationController::overview', 'entity_type_id' => $entity_type_id, ), array( '_entity_access' => $entity_type_id . '.view', '_access_content_translation_overview' => $entity_type_id, ), array( 'parameters' => array( $entity_type_id => array( 'type' => 'entity:' . $entity_type_id, ), ), '_admin_route' => $is_admin, ) ); $route_name = "entity.$entity_type_id.content_translation_overview"; $collection->add($route_name, $route); $route = new Route( $path . '/add/{source}/{target}', array( '_controller' => '\Drupal\content_translation\Controller\ContentTranslationController::add', 'source' => NULL, 'target' => NULL, '_title' => 'Add', 'entity_type_id' => $entity_type_id, ), array( '_entity_access' => $entity_type_id . '.view', '_access_content_translation_manage' => 'create', ), array( 'parameters' => array( 'source' => array( 'type' => 'language', ), 'target' => array( 'type' => 'language', ), $entity_type_id => array( 'type' => 'entity:' . $entity_type_id, ), ), '_admin_route' => $is_admin, ) ); $collection->add("entity.$entity_type_id.content_translation_add", $route); $route = new Route( $path . '/edit/{language}', array( '_controller' => '\Drupal\content_translation\Controller\ContentTranslationController::edit', 'language' => NULL, '_title' => 'Edit', 'entity_type_id' => $entity_type_id, ), array( '_access_content_translation_manage' => 'update', ), array( 'parameters' => array( 'language' => array( 'type' => 'language', ), $entity_type_id => array( 'type' => 'entity:' . $entity_type_id, ), ), '_admin_route' => $is_admin, ) ); $collection->add("entity.$entity_type_id.content_translation_edit", $route); $route = new Route( $path . '/delete/{language}', array( '_entity_form' => $entity_type_id . '.content_translation_deletion', 'language' => NULL, '_title' => 'Delete', 'entity_type_id' => $entity_type_id, ), array( '_access_content_translation_manage' => 'delete', ), array( 'parameters' => array( 'language' => array( 'type' => 'language', ), $entity_type_id => array( 'type' => 'entity:' . $entity_type_id, ), ), '_admin_route' => $is_admin, ) ); $collection->add("entity.$entity_type_id.content_translation_delete", $route); } }
Please login to continue.