From 14e6be65b2e172477d47103ee0cb61f320e59826 Mon Sep 17 00:00:00 2001 From: Chi Date: Fri, 24 Apr 2020 08:55:23 +0000 Subject: [PATCH] Add cache keys to block build --- src/View/BlockViewBuilder.php | 7 +++++++ tests/src/Kernel/BlockViewBuilderTest.php | 16 ++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/View/BlockViewBuilder.php b/src/View/BlockViewBuilder.php index 02339f8..379903d 100644 --- a/src/View/BlockViewBuilder.php +++ b/src/View/BlockViewBuilder.php @@ -147,8 +147,15 @@ class BlockViewBuilder { CacheableMetadata::createFromRenderArray($build) ->merge(CacheableMetadata::createFromObject($access)) + ->merge(CacheableMetadata::createFromObject($block_plugin)) ->applyTo($build); + if (!isset($build['#cache']['keys'])) { + $configuration['_wrapper'] = $wrapper; + $configuration_hash = hash('sha256', serialize($configuration)); + $build['#cache']['keys'] = ['twig_tweak_block', $id, $configuration_hash]; + } + return $build; } diff --git a/tests/src/Kernel/BlockViewBuilderTest.php b/tests/src/Kernel/BlockViewBuilderTest.php index e075075..af30454 100644 --- a/tests/src/Kernel/BlockViewBuilderTest.php +++ b/tests/src/Kernel/BlockViewBuilderTest.php @@ -62,6 +62,11 @@ final class BlockViewBuilderTest extends KernelTestBase { 'contexts' => ['user'], 'tags' => ['tag_from_blockAccess'], 'max-age' => 35, + 'keys' => [ + 'twig_tweak_block', + 'twig_tweak_test_foo', + '9ef25a303eb97a01011ea20c50e731590c000f8bc6196241020fc118cce68180', + ], ], ]; self::assertSame($expected_build, $build); @@ -72,6 +77,7 @@ final class BlockViewBuilderTest extends KernelTestBase { $expected_build['content']['#markup'] = 'Bar'; $expected_build['#configuration']['label'] = 'Example'; $expected_build['#configuration']['content'] = 'Bar'; + $expected_build['#cache']['keys'][2] = '96b740819b50d416148484351f52de1c894b63cf59af255b502c9399c73b8557'; self::assertSame($expected_build, $build); self::assertSame('

Example

Bar
', $this->renderPlain($build)); @@ -89,6 +95,11 @@ final class BlockViewBuilderTest extends KernelTestBase { 'contexts' => ['user'], 'tags' => ['tag_from_blockAccess'], 'max-age' => 35, + 'keys' => [ + 'twig_tweak_block', + 'twig_tweak_test_foo', + '82b254ef229c95f336386ee50454e0cc56705e97c1991d68fe9afdb1fb401f3a', + ], ], ]; self::assertSame($expected_build, $build); @@ -102,6 +113,11 @@ final class BlockViewBuilderTest extends KernelTestBase { 'contexts' => ['user'], 'tags' => ['tag_from_blockAccess'], 'max-age' => 35, + 'keys' => [ + 'twig_tweak_block', + 'twig_tweak_test_foo', + '9ef25a303eb97a01011ea20c50e731590c000f8bc6196241020fc118cce68180', + ], ], ]; self::assertSame($expected_build, $build);