diff --git a/page_manager.post_update.php b/page_manager.post_update.php index 320948c..fdf8e37 100644 --- a/page_manager.post_update.php +++ b/page_manager.post_update.php @@ -41,3 +41,10 @@ function page_manager_post_update_replace_current_user_context(&$sandbox = NULL) $pageVariant->save(); }); } + +/** + * Update container for page_manager.page_access_check arguments. + */ +function page_manager_post_update_page_access_check_service_refactor() { + // Intentionally empty to trigger a service container rebuild. +} diff --git a/page_manager.services.yml b/page_manager.services.yml index f37751e..8173932 100644 --- a/page_manager.services.yml +++ b/page_manager.services.yml @@ -38,5 +38,8 @@ services: arguments: ['@current_route_match'] page_manager.page_access_check: class: Drupal\page_manager\Entity\PageAccessCheck + arguments: + - '@request_stack' + - '@entity_type.manager' tags: - { name: access_check, applies_to: _page_access } diff --git a/src/Entity/PageAccessCheck.php b/src/Entity/PageAccessCheck.php index ac3c93c..02ef6a5 100644 --- a/src/Entity/PageAccessCheck.php +++ b/src/Entity/PageAccessCheck.php @@ -2,31 +2,104 @@ namespace Drupal\page_manager\Entity; -use Drupal\Core\Entity\EntityAccessCheck; +use Drupal\Core\Access\AccessResult; +use Drupal\Core\Entity\EntityInterface; +use Drupal\Core\Entity\EntityTypeManagerInterface; +use Drupal\Core\Routing\Access\AccessInterface; use Drupal\Core\Routing\RouteMatchInterface; use Drupal\Core\Session\AccountInterface; +use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\Routing\Route; /** * Mimics the generic entity access but with a custom key to prevent collisions. */ -class PageAccessCheck extends EntityAccessCheck { +class PageAccessCheck implements AccessInterface { /** - * {@inheritdoc} + * The request stack. + * + * @var \Symfony\Component\HttpFoundation\RequestStack + */ + protected RequestStack $requestStack; + + /** + * The entity type manager. + * + * @var \Drupal\Core\Entity\EntityTypeManagerInterface + */ + protected EntityTypeManagerInterface $entityTypeManager; + + /** + * Creates a new PageAccessCheck. + * + * @param \Symfony\Component\HttpFoundation\RequestStack $request_stack + * The request stack. + * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entityTypeManager + * The entity type manager. + */ + public function __construct(RequestStack $request_stack, EntityTypeManagerInterface $entityTypeManager) { + $this->requestStack = $request_stack; + $this->entityTypeManager = $entityTypeManager; + } + + /** + * Checks access to the page operation on the given route. + * + * We can not use _entity_access as route match can not see params that + * start with '_'. + * + * @param \Symfony\Component\Routing\Route $route + * The route to check against. + * @param \Drupal\Core\Routing\RouteMatchInterface $route_match + * The parametrized route. + * @param \Drupal\Core\Session\AccountInterface $account + * The currently logged in account. + * + * @see https://www.drupal.org/project/drupal/issues/3277784 + * @see https://www.drupal.org/project/page_manager/issues/3362561 + * + * @return \Drupal\Core\Access\AccessResultInterface + * The access result. */ public function access(Route $route, RouteMatchInterface $route_match, AccountInterface $account) { - // Backup the original requirements. - $original_requirements = $route->getRequirements(); + // Split the entity type and the operation. + $requirement = $route->getRequirement('_page_access'); + [$entity_type, $operation] = explode('.', $requirement); + + // Get entity object from the request attributes if it's not available in + // the route match parameters. + $parameters = $route_match->getParameters(); + $entity = $parameters->has($entity_type) + ? $parameters->get($entity_type) + : $this->requestStack->getCurrentRequest()->attributes->get($entity_type); + + // @todo Need to check this variant. + // During node save parameters for `_page_manager_page` does not exists. + // Take information from route. + if (!$entity) { + $entity = ($route->hasDefault('_page_manager_page')) + ? $route->getDefault('_page_manager_page') + : NULL; + } - // Replace it with our entity access value and run the parent access check. - $route->setRequirement('_entity_access', $route->getRequirement('_page_access')); - $access = parent::access($route, $route_match, $account); + // Try to load the entity if it has not been loaded yet. + if ($entity !== null && !$entity instanceof EntityInterface && $entity_type === '_page_manager_page') { + try { + $entity = $this->entityTypeManager->getStorage('page')->load($entity); + } + catch (\Exception $e) { + // Could not load the entity, we fall back to the default behaviour. + } + } - // Restore the original requirements. - $route->setRequirements($original_requirements); + if ($entity instanceof EntityInterface) { + return $entity->access($operation, $account, TRUE); + } - return $access; + // No opinion, so other access checks should decide if access should be + // allowed or not. + return AccessResult::neutral(); } } diff --git a/src/EventSubscriber/RouteNameResponseSubscriber.php b/src/EventSubscriber/RouteNameResponseSubscriber.php index ef695e1..b5f901b 100644 --- a/src/EventSubscriber/RouteNameResponseSubscriber.php +++ b/src/EventSubscriber/RouteNameResponseSubscriber.php @@ -43,7 +43,7 @@ class RouteNameResponseSubscriber implements EventSubscriberInterface { // If the route specifies a 'base route name', use that. Otherwise fall // back to the route name. The 'base route name' is specified in // \Drupal\page_manager\Routing\PageManagerRoutes. - $route_name = $this->routeMatch->getParameter('base_route_name') ?: $this->routeMatch->getRouteName(); + $route_name = $this->routeMatch->getParameter('_base_route_name') ?: $this->routeMatch->getRouteName(); $cacheability_metadata->addCacheTags(['page_manager_route_name:' . $route_name]); } } diff --git a/src/EventSubscriber/RouteParamContext.php b/src/EventSubscriber/RouteParamContext.php index 9a3a349..4c0895a 100644 --- a/src/EventSubscriber/RouteParamContext.php +++ b/src/EventSubscriber/RouteParamContext.php @@ -61,7 +61,7 @@ class RouteParamContext implements EventSubscriberInterface { if ($route && $route_contexts = $route->getOption('parameters')) { foreach ($route_contexts as $route_context_name => $route_context) { // Skip this parameter. - if ($route_context_name == 'page_manager_page_variant' || $route_context_name == 'page_manager_page') { + if ($route_context_name == '_page_manager_page_variant' || $route_context_name == '_page_manager_page') { continue; } diff --git a/src/Routing/PageManagerRoutes.php b/src/Routing/PageManagerRoutes.php index d821b7d..017a3ae 100644 --- a/src/Routing/PageManagerRoutes.php +++ b/src/Routing/PageManagerRoutes.php @@ -66,7 +66,7 @@ class PageManagerRoutes extends RouteSubscriberBase { $collection_route = $collection->get($overridden_route_name); // Add the name of the overridden route for use during filtering. - $defaults['overridden_route_name'] = $overridden_route_name; + $defaults['_overridden_route_name'] = $overridden_route_name; $path = $collection_route->getPath(); $parameters = $collection_route->getOption('parameters') ?: []; $requirements = $collection_route->getRequirements(); @@ -89,21 +89,21 @@ class PageManagerRoutes extends RouteSubscriberBase { // When adding multiple variants, the variant ID is added to the route // name. In order to convey the base route name for this set of variants, // add it as a parameter. - $defaults['base_route_name'] = $base_route_name; + $defaults['_base_route_name'] = $base_route_name; - $defaults['_entity_view'] = 'page_manager_page_variant'; + $defaults['_entity_view'] = '_page_manager_page_variant'; $defaults['_title'] = $entity->label(); - $defaults['page_manager_page'] = $entity->id(); - $parameters['page_manager_page_variant']['type'] = 'entity:page_variant'; - $parameters['page_manager_page']['type'] = 'entity:page'; - $requirements['_page_access'] = 'page_manager_page.view'; + $defaults['_page_manager_page'] = $entity->id(); + $parameters['_page_manager_page_variant']['type'] = 'entity:page_variant'; + $parameters['_page_manager_page']['type'] = 'entity:page'; + $requirements['_page_access'] = '_page_manager_page.view'; foreach ($entity->getVariants() as $variant_id => $variant) { // Construct and add a new route. $route = new Route( $path, $defaults + [ - 'page_manager_page_variant' => $variant_id, - 'page_manager_page_variant_weight' => $variant->getWeight(), + '_page_manager_page_variant' => $variant_id, + '_page_manager_page_variant_weight' => $variant->getWeight(), ], $requirements, [ diff --git a/src/Routing/VariantRouteFilter.php b/src/Routing/VariantRouteFilter.php index a666583..a770f49 100644 --- a/src/Routing/VariantRouteFilter.php +++ b/src/Routing/VariantRouteFilter.php @@ -71,7 +71,7 @@ class VariantRouteFilter implements FilterInterface { $routes = $collection->all(); // Only continue if at least one route has a page manager variant. if (!array_filter($routes, function (Route $route) { - return $route->hasDefault('page_manager_page_variant'); + return $route->hasDefault('_page_manager_page_variant'); })) { return $collection; } @@ -81,7 +81,7 @@ class VariantRouteFilter implements FilterInterface { $variant_route_name = $this->getVariantRouteName($routes, $request); foreach ($routes as $name => $route) { - if (!$route->hasDefault('page_manager_page_variant')) { + if (!$route->hasDefault('_page_manager_page_variant')) { continue; } @@ -91,7 +91,7 @@ class VariantRouteFilter implements FilterInterface { } // If the selected route is overriding another route, remove the // overridden route. - elseif ($overridden_route_name = $route->getDefault('overridden_route_name')) { + elseif ($overridden_route_name = $route->getDefault('_overridden_route_name')) { unset($routes[$overridden_route_name]); } } @@ -100,7 +100,7 @@ class VariantRouteFilter implements FilterInterface { // the overridden_route_name if available. $result_collection = new RouteCollection(); foreach ($routes as $name => $route) { - $overridden_route_name = $route->getDefault('overridden_route_name') ?: $name; + $overridden_route_name = $route->getDefault('_overridden_route_name') ?: $name; $result_collection->add($overridden_route_name, $route); } return $result_collection; @@ -121,13 +121,13 @@ class VariantRouteFilter implements FilterInterface { // Store the unaltered request attributes. $original_attributes = $request->attributes->all(); foreach ($routes as $name => $route) { - if (!$page_variant_id = $route->getDefault('page_manager_page_variant')) { + if (!$page_variant_id = $route->getDefault('_page_manager_page_variant')) { continue; } if ($attributes = $this->getRequestAttributes($route, $name, $request)) { // Use the overridden route name if available. - $attributes[RouteObjectInterface::ROUTE_NAME] = $route->getDefault('overridden_route_name') ?: $name; + $attributes[RouteObjectInterface::ROUTE_NAME] = $route->getDefault('_overridden_route_name') ?: $name; // Add the enhanced attributes to the request. $request->attributes->add($attributes); $this->requestStack->push($request); @@ -160,7 +160,7 @@ class VariantRouteFilter implements FilterInterface { protected function sortRoutes(array $unsorted_routes) { // Create a mapping of route names to their weights. $weights_by_key = array_map(function (Route $route) { - return $route->getDefault('page_manager_page_variant_weight') ?: 0; + return $route->getDefault('_page_manager_page_variant_weight') ?: 0; }, $unsorted_routes); // Create an array holding the route names to be sorted. diff --git a/tests/src/Unit/PageManagerRoutesTest.php b/tests/src/Unit/PageManagerRoutesTest.php index 20e76f9..8917213 100644 --- a/tests/src/Unit/PageManagerRoutesTest.php +++ b/tests/src/Unit/PageManagerRoutesTest.php @@ -126,23 +126,23 @@ class PageManagerRoutesTest extends UnitTestCase { $this->assertSame(['page_manager.page_view_page1_variant1'], array_keys($collection->all())); $route = $collection->get('page_manager.page_view_page1_variant1'); $expected_defaults = [ - '_entity_view' => 'page_manager_page_variant', + '_entity_view' => '_page_manager_page_variant', '_title' => 'Page label', - 'page_manager_page_variant' => 'variant1', - 'page_manager_page' => 'page1', - 'page_manager_page_variant_weight' => 0, - 'base_route_name' => 'page_manager.page_view_page1', + '_page_manager_page_variant' => 'variant1', + '_page_manager_page' => 'page1', + '_page_manager_page_variant_weight' => 0, + '_base_route_name' => 'page_manager.page_view_page1', ]; $expected_requirements = [ - '_page_access' => 'page_manager_page.view', + '_page_access' => '_page_manager_page.view', ]; $expected_options = [ 'compiler_class' => 'Symfony\Component\Routing\RouteCompiler', 'parameters' => [ - 'page_manager_page_variant' => [ + '_page_manager_page_variant' => [ 'type' => 'entity:page_variant', ], - 'page_manager_page' => [ + '_page_manager_page' => [ 'type' => 'entity:page', ], ], @@ -204,23 +204,23 @@ class PageManagerRoutesTest extends UnitTestCase { $route = $collection->get('page_manager.page_view_page1_variant1'); $expected_defaults = [ - '_entity_view' => 'page_manager_page_variant', + '_entity_view' => '_page_manager_page_variant', '_title' => NULL, - 'page_manager_page_variant' => 'variant1', - 'page_manager_page' => 'page1', - 'page_manager_page_variant_weight' => 0, - 'overridden_route_name' => 'test_route', - 'base_route_name' => 'test_route', + '_page_manager_page_variant' => 'variant1', + '_page_manager_page' => 'page1', + '_page_manager_page_variant_weight' => 0, + '_overridden_route_name' => 'test_route', + '_base_route_name' => 'test_route', ]; - $expected_requirements = $requirements + ['_page_access' => 'page_manager_page.view']; + $expected_requirements = $requirements + ['_page_access' => '_page_manager_page.view']; $expected_options = [ 'compiler_class' => 'Symfony\Component\Routing\RouteCompiler', 'parameters' => [ 'foo' => ['type' => 'bar'], - 'page_manager_page_variant' => [ + '_page_manager_page_variant' => [ 'type' => 'entity:page_variant', ], - 'page_manager_page' => [ + '_page_manager_page' => [ 'type' => 'entity:page', ], ], @@ -293,25 +293,25 @@ class PageManagerRoutesTest extends UnitTestCase { 'page_manager.page_view_page1_variant1' => [ 'path' => '/test_route1', 'defaults' => [ - '_entity_view' => 'page_manager_page_variant', + '_entity_view' => '_page_manager_page_variant', '_title' => 'Page 1', - 'page_manager_page_variant' => 'variant1', - 'page_manager_page' => 'page1', - 'page_manager_page_variant_weight' => 0, - 'overridden_route_name' => 'test_route', - 'base_route_name' => 'test_route', + '_page_manager_page_variant' => 'variant1', + '_page_manager_page' => 'page1', + '_page_manager_page_variant_weight' => 0, + '_overridden_route_name' => 'test_route', + '_base_route_name' => 'test_route', ], 'requirements' => [ '_access' => 'TRUE', - '_page_access' => 'page_manager_page.view', + '_page_access' => '_page_manager_page.view', ], 'options' => [ 'compiler_class' => 'Symfony\Component\Routing\RouteCompiler', 'parameters' => [ - 'page_manager_page_variant' => [ + '_page_manager_page_variant' => [ 'type' => 'entity:page_variant', ], - 'page_manager_page' => [ + '_page_manager_page' => [ 'type' => 'entity:page', ], ], @@ -321,23 +321,23 @@ class PageManagerRoutesTest extends UnitTestCase { 'page_manager.page_view_page2_variant2' => [ 'path' => '/test_route2', 'defaults' => [ - '_entity_view' => 'page_manager_page_variant', + '_entity_view' => '_page_manager_page_variant', '_title' => 'Page 2', - 'page_manager_page_variant' => 'variant2', - 'page_manager_page' => 'page2', - 'page_manager_page_variant_weight' => 0, - 'base_route_name' => 'page_manager.page_view_page2', + '_page_manager_page_variant' => 'variant2', + '_page_manager_page' => 'page2', + '_page_manager_page_variant_weight' => 0, + '_base_route_name' => 'page_manager.page_view_page2', ], 'requirements' => [ - '_page_access' => 'page_manager_page.view', + '_page_access' => '_page_manager_page.view', ], 'options' => [ 'compiler_class' => 'Symfony\Component\Routing\RouteCompiler', 'parameters' => [ - 'page_manager_page_variant' => [ + '_page_manager_page_variant' => [ 'type' => 'entity:page_variant', ], - 'page_manager_page' => [ + '_page_manager_page' => [ 'type' => 'entity:page', ], ], @@ -382,15 +382,15 @@ class PageManagerRoutesTest extends UnitTestCase { $this->routeSubscriber->onAlterRoutes($route_event); $expected_defaults = [ - '_entity_view' => 'page_manager_page_variant', + '_entity_view' => '_page_manager_page_variant', '_title' => NULL, - 'page_manager_page_variant' => 'variant1', - 'page_manager_page' => 'page1', - 'page_manager_page_variant_weight' => 0, - 'overridden_route_name' => $route_name, - 'base_route_name' => 'test_route', + '_page_manager_page_variant' => 'variant1', + '_page_manager_page' => 'page1', + '_page_manager_page_variant_weight' => 0, + '_overridden_route_name' => $route_name, + '_base_route_name' => 'test_route', ]; - $expected_requirements = $requirements + ['_page_access' => 'page_manager_page.view']; + $expected_requirements = $requirements + ['_page_access' => '_page_manager_page.view']; $expected_options = [ 'compiler_class' => 'Symfony\Component\Routing\RouteCompiler', 'parameters' => [ @@ -398,10 +398,10 @@ class PageManagerRoutesTest extends UnitTestCase { 'bar' => 'bar', 'type' => 'integer', ], - 'page_manager_page_variant' => [ + '_page_manager_page_variant' => [ 'type' => 'entity:page_variant', ], - 'page_manager_page' => [ + '_page_manager_page' => [ 'type' => 'entity:page', ], ], diff --git a/tests/src/Unit/RouteNameResponseSubscriberTest.php b/tests/src/Unit/RouteNameResponseSubscriberTest.php index b46400b..71a2a6b 100644 --- a/tests/src/Unit/RouteNameResponseSubscriberTest.php +++ b/tests/src/Unit/RouteNameResponseSubscriberTest.php @@ -29,7 +29,7 @@ class RouteNameResponseSubscriberTest extends UnitTestCase { $route_name = 'the_route_name'; $master_route_match = $this->prophesize(RouteMatchInterface::class); - $master_route_match->getParameter('base_route_name')->willReturn(NULL); + $master_route_match->getParameter('_base_route_name')->willReturn(NULL); $master_route_match->getRouteName()->willReturn($route_name); $current_route_match = $this->prophesize(StackedRouteMatchInterface::class); $current_route_match->getMasterRouteMatch()->willReturn($master_route_match->reveal()); @@ -67,7 +67,7 @@ class RouteNameResponseSubscriberTest extends UnitTestCase { $route_name = 'the_route_name'; $master_route_match = $this->prophesize(RouteMatchInterface::class); - $master_route_match->getParameter('base_route_name')->willReturn($route_name); + $master_route_match->getParameter('_base_route_name')->willReturn($route_name); $master_route_match->getRouteName()->shouldNotBeCalled(); $current_route_match = $this->prophesize(StackedRouteMatchInterface::class); $current_route_match->getMasterRouteMatch()->willReturn($master_route_match->reveal()); diff --git a/tests/src/Unit/VariantRouteFilterTest.php b/tests/src/Unit/VariantRouteFilterTest.php index 5cdb9ec..85a96bf 100644 --- a/tests/src/Unit/VariantRouteFilterTest.php +++ b/tests/src/Unit/VariantRouteFilterTest.php @@ -106,7 +106,7 @@ class VariantRouteFilterTest extends UnitTestCase { $route_collection = new RouteCollection(); $request = new Request(); - $route = new Route('/path/with/{slug}', ['page_manager_page_variant' => 'a_variant']); + $route = new Route('/path/with/{slug}', ['_page_manager_page_variant' => 'a_variant']); $route_collection->add('a_route', $route); $page_variant = $this->prophesize(PageVariantInterface::class); @@ -149,7 +149,7 @@ class VariantRouteFilterTest extends UnitTestCase { $route_collection = new RouteCollection(); $request = new Request(); - $route = new Route('/path/with/{slug}', ['page_manager_page_variant' => 'a_variant']); + $route = new Route('/path/with/{slug}', ['_page_manager_page_variant' => 'a_variant']); $route_collection->add('a_route', $route); $page_variant = $this->prophesize(PageVariantInterface::class); @@ -173,7 +173,7 @@ class VariantRouteFilterTest extends UnitTestCase { $route_collection = new RouteCollection(); $request = new Request(); - $route = new Route('/path/with/{slug}', ['page_manager_page_variant' => 'a_variant']); + $route = new Route('/path/with/{slug}', ['_page_manager_page_variant' => 'a_variant']); $route_collection->add('a_route', $route); $page_variant = $this->prophesize(PageVariantInterface::class); @@ -186,7 +186,7 @@ class VariantRouteFilterTest extends UnitTestCase { $expected = ['a_route' => $route]; $this->assertSame($expected, $result->all()); $expected_attributes = [ - 'page_manager_page_variant' => 'a_variant', + '_page_manager_page_variant' => 'a_variant', '_route_object' => $route, '_route' => 'a_route', '_page_manager_attributes_prepared' => TRUE, @@ -202,8 +202,8 @@ class VariantRouteFilterTest extends UnitTestCase { $route_collection = new RouteCollection(); $request = new Request(); - $route1 = new Route('/path/with/{slug}', ['page_manager_page_variant' => 'variant_1', 'page_manager_page_variant_weight' => 0]); - $route2 = new Route('/path/with/{slug}', ['page_manager_page_variant' => 'variant_2', 'page_manager_page_variant_weight' => 2]); + $route1 = new Route('/path/with/{slug}', ['_page_manager_page_variant' => 'variant_1', '_page_manager_page_variant_weight' => 0]); + $route2 = new Route('/path/with/{slug}', ['_page_manager_page_variant' => 'variant_2', '_page_manager_page_variant_weight' => 2]); // Add route2 first to ensure that the routes get sorted by weight. $route_collection->add('route_2', $route2); $route_collection->add('route_1', $route1); @@ -219,8 +219,8 @@ class VariantRouteFilterTest extends UnitTestCase { $expected = ['route_1' => $route1]; $this->assertSame($expected, $result->all()); $expected_attributes = [ - 'page_manager_page_variant' => 'variant_1', - 'page_manager_page_variant_weight' => 0, + '_page_manager_page_variant' => 'variant_1', + '_page_manager_page_variant_weight' => 0, '_route_object' => $route1, '_route' => 'route_1', '_page_manager_attributes_prepared' => TRUE, @@ -236,11 +236,11 @@ class VariantRouteFilterTest extends UnitTestCase { $route_collection = new RouteCollection(); $request = new Request(); - $route1 = new Route('/path/with/{slug}', ['page_manager_page_variant' => 'variant_1', 'page_manager_page_variant_weight' => 1]); + $route1 = new Route('/path/with/{slug}', ['_page_manager_page_variant' => 'variant_1', '_page_manager_page_variant_weight' => 1]); $defaults = [ - 'page_manager_page_variant' => 'variant_2', - 'page_manager_page_variant_weight' => 2, - 'overridden_route_name' => 'overridden_route_name_for_selected_route', + '_page_manager_page_variant' => 'variant_2', + '_page_manager_page_variant_weight' => 2, + '_overridden_route_name' => 'overridden_route_name_for_selected_route', ]; $route2 = new Route('/path/with/{slug}', $defaults); // Add route2 first to ensure that the routes get sorted by weight. @@ -281,13 +281,13 @@ class VariantRouteFilterTest extends UnitTestCase { // The selected route specifies a different base route. $defaults = [ - 'page_manager_page_variant' => 'variant1', - 'page_manager_page_variant_weight' => -2, - 'overridden_route_name' => 'route_1', + '_page_manager_page_variant' => 'variant1', + '_page_manager_page_variant_weight' => -2, + '_overridden_route_name' => 'route_1', ]; $route1 = new Route('/path/with/{slug}'); $route2 = new Route('/path/with/{slug}', $defaults); - $route3 = new Route('/path/with/{slug}', ['page_manager_page_variant' => 'variant2', 'page_manager_page_variant_weight' => -1]); + $route3 = new Route('/path/with/{slug}', ['_page_manager_page_variant' => 'variant2', '_page_manager_page_variant_weight' => -1]); $route4 = new Route('/path/with/{slug}'); // Add routes in different order to test sorting. $route_collection->add('route_3', $route3); @@ -323,7 +323,7 @@ class VariantRouteFilterTest extends UnitTestCase { $route_collection = new RouteCollection(); $request = new Request([], [], ['foo' => 'bar', 'slug' => 2]); - $route = new Route('/path/with/{slug}', ['page_manager_page_variant' => 'a_variant']); + $route = new Route('/path/with/{slug}', ['_page_manager_page_variant' => 'a_variant']); $route_collection->add('a_route', $route); $page_variant = $this->prophesize(PageVariantInterface::class); @@ -337,7 +337,7 @@ class VariantRouteFilterTest extends UnitTestCase { $result_enhance_attributes = $expected_enhance_attributes = [ 'foo' => 'bar', 'slug' => '1', - 'page_manager_page_variant' => 'a_variant', + '_page_manager_page_variant' => 'a_variant', '_route_object' => $route, '_route' => 'a_route', ]; @@ -350,7 +350,7 @@ class VariantRouteFilterTest extends UnitTestCase { $expected_attributes = [ 'foo' => 'bar', 'slug' => 'slug 1', - 'page_manager_page_variant' => 'a_variant', + '_page_manager_page_variant' => 'a_variant', '_route_object' => $route, '_route' => 'a_route', '_page_manager_attributes_prepared' => TRUE, @@ -368,7 +368,7 @@ class VariantRouteFilterTest extends UnitTestCase { $original_attributes = ['foo' => 'bar', 'slug' => 2]; $request = new Request([], [], $original_attributes); - $route = new Route('/path/with/{slug}', ['page_manager_page_variant' => 'a_variant']); + $route = new Route('/path/with/{slug}', ['_page_manager_page_variant' => 'a_variant']); $route_collection->add('a_route', $route); $page_variant = $this->prophesize(PageVariantInterface::class); @@ -382,7 +382,7 @@ class VariantRouteFilterTest extends UnitTestCase { $expected_enhance_attributes = [ 'foo' => 'bar', 'slug' => '1', - 'page_manager_page_variant' => 'a_variant', + '_page_manager_page_variant' => 'a_variant', '_route_object' => $route, '_route' => 'a_route', ]; @@ -402,8 +402,8 @@ class VariantRouteFilterTest extends UnitTestCase { $request = new Request(); // Add routes in different order to also test order preserving. - $route1 = new Route('/path/with/{slug}', ['page_manager_page_variant' => 'variant1', 'page_manager_page_variant_weight' => -10, 'overridden_route_name' => 'preserved_route_name']); - $route2 = new Route('/path/with/{slug}', ['page_manager_page_variant' => 'variant2', 'page_manager_page_variant_weight' => -5]); + $route1 = new Route('/path/with/{slug}', ['_page_manager_page_variant' => 'variant1', '_page_manager_page_variant_weight' => -10, '_overridden_route_name' => 'preserved_route_name']); + $route2 = new Route('/path/with/{slug}', ['_page_manager_page_variant' => 'variant2', '_page_manager_page_variant_weight' => -5]); $route3 = new Route('/path/with/{slug}', []); $route4 = new Route('/path/with/{slug}', []); $route_collection->add('route_4', $route4);