diff --git a/src/View/RegionViewBuilder.php b/src/View/RegionViewBuilder.php index 4533012..7672985 100644 --- a/src/View/RegionViewBuilder.php +++ b/src/View/RegionViewBuilder.php @@ -8,6 +8,7 @@ use Drupal\Core\Config\ConfigFactoryInterface; use Drupal\Core\Controller\TitleResolverInterface; use Drupal\Core\Entity\EntityTypeManagerInterface; use Drupal\Core\Routing\RouteObjectInterface; +use Drupal\Core\Theme\ThemeManagerInterface; use Symfony\Component\HttpFoundation\RequestStack; /** @@ -43,6 +44,13 @@ class RegionViewBuilder { */ protected $titleResolver; + /** + * The theme manager. + * + * @var \Drupal\Core\Theme\ThemeManagerInterface + */ + protected $themeManager; + /** * Constructs a RegionViewBuilder object. */ @@ -50,12 +58,14 @@ class RegionViewBuilder { EntityTypeManagerInterface $entity_type_manager, ConfigFactoryInterface $config_factory, RequestStack $request_stack, - TitleResolverInterface $title_resolver + TitleResolverInterface $title_resolver, + ThemeManagerInterface $theme_manager ) { $this->entityTypeManager = $entity_type_manager; $this->configFactory = $config_factory; $this->requestStack = $request_stack; $this->titleResolver = $title_resolver; + $this->themeManager = $theme_manager; } /** @@ -71,10 +81,9 @@ class RegionViewBuilder { * A render array to display the region content. */ public function build(string $region, string $theme = NULL): array { - $blocks = $this->entityTypeManager->getStorage('block')->loadByProperties([ 'region' => $region, - 'theme' => $theme ?: $this->configFactory->get('system.theme')->get('default'), + 'theme' => $theme ?: $this->themeManager->getActiveTheme()->getName(), ]); $view_builder = $this->entityTypeManager->getViewBuilder('block'); diff --git a/tests/src/Kernel/RegionViewBuilderTest.php b/tests/src/Kernel/RegionViewBuilderTest.php index 40a1eb8..e49316f 100644 --- a/tests/src/Kernel/RegionViewBuilderTest.php +++ b/tests/src/Kernel/RegionViewBuilderTest.php @@ -62,14 +62,14 @@ final class RegionViewBuilderTest extends AbstractTestCase { $build = $view_builder->build('sidebar_first'); // The build should be empty because 'stark' is not a default theme. - $expected_build = [ + $expected_sidebar_first = [ '#cache' => [ 'contexts' => [], 'tags' => ['config:block_list'], 'max-age' => Cache::PERMANENT, ], ]; - self::assertSame($expected_build, $build); + self::assertSame($expected_sidebar_first, $build); // Specify the theme name explicitly. $build = $view_builder->build('sidebar_first', 'stark'); @@ -137,7 +137,7 @@ final class RegionViewBuilderTest extends AbstractTestCase { ->save(); $build = $view_builder->build('sidebar_first'); - self::assertRenderArray($expected_build, $build); + self::assertRenderArray($expected_sidebar_first, $build); Html::resetSeenIds(); $actual_html = $renderer->renderPlain($expected_build); diff --git a/twig_tweak.services.yml b/twig_tweak.services.yml index b224788..c0f2839 100644 --- a/twig_tweak.services.yml +++ b/twig_tweak.services.yml @@ -11,7 +11,7 @@ services: twig_tweak.region_view_builder: class: Drupal\twig_tweak\View\RegionViewBuilder - arguments: ['@entity_type.manager', '@config.factory', '@request_stack', '@title_resolver'] + arguments: ['@entity_type.manager', '@config.factory', '@request_stack', '@title_resolver', '@theme.manager'] twig_tweak.entity_view_builder: class: Drupal\twig_tweak\View\EntityViewBuilder