.../big_pipe/src/Render/Placeholder/BigPipeStrategy.php | 2 +- core/modules/block/src/BlockViewBuilder.php | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/core/modules/big_pipe/src/Render/Placeholder/BigPipeStrategy.php b/core/modules/big_pipe/src/Render/Placeholder/BigPipeStrategy.php index c4df41b..a475ed8 100644 --- a/core/modules/big_pipe/src/Render/Placeholder/BigPipeStrategy.php +++ b/core/modules/big_pipe/src/Render/Placeholder/BigPipeStrategy.php @@ -221,7 +221,7 @@ protected static function createBigPipeJsPlaceholder($original_placeholder, arra $callable[1] .= 'Preview'; } if (is_callable($callable)) { - $interface_preview = $callable(); + $interface_preview = call_user_func_array($callable, $placeholder_render_array['#lazy_builder'][1]); assert('is_array($interface_preview)', "Interface preview for $original_placeholder must be a render array."); } diff --git a/core/modules/block/src/BlockViewBuilder.php b/core/modules/block/src/BlockViewBuilder.php index 3b20d7b..6b054ad 100644 --- a/core/modules/block/src/BlockViewBuilder.php +++ b/core/modules/block/src/BlockViewBuilder.php @@ -191,6 +191,23 @@ public static function lazyBuilder($entity_id, $view_mode) { } /** + * Interface preview for ::lazyBuilder(). + */ + public static function lazyBuilderPreview($entity_id) { + $block = Block::load($entity_id); + return [ + '#theme' => 'block', + '#attributes' => [], + '#configuration' => ['provider' => 'preview'], + '#plugin_id' => 'preview__' . $block->getPluginId(), + '#base_plugin_id' => '', + '#derivative_plugin_id' => '', + '#id' => 'preview__' . $entity_id, + 'content' => [], + ]; + } + + /** * #pre_render callback for building a block. * * Renders the content using the provided block plugin, and then: