Verified Commit 55e46f4b authored by Alex Pott's avatar Alex Pott
Browse files

Issue #3294833 by claudiu.cristea, alexpott: Page variant plugin is not correctlly instantiated

(cherry picked from commit b99736b5a51b1e74bd51914d42bbf754daae9988)
parent 9cc94159
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -223,6 +223,7 @@ protected function prepare(array $main_content, Request $request, RouteMatchInte
      $event = new PageDisplayVariantSelectionEvent('simple_page', $route_match);
      $this->eventDispatcher->dispatch($event, RenderEvents::SELECT_PAGE_DISPLAY_VARIANT);
      $variant_id = $event->getPluginId();
      $variant_configuration = $event->getPluginConfiguration();

      // We must render the main content now already, because it might provide a
      // title. We set its $is_root_call parameter to FALSE, to ensure
@@ -248,15 +249,14 @@ protected function prepare(array $main_content, Request $request, RouteMatchInte
      $title = $get_title($main_content);

      // Instantiate the page display, and give it the main content.
      $page_display = $this->displayVariantManager->createInstance($variant_id);
      $page_display = $this->displayVariantManager->createInstance($variant_id, $variant_configuration);
      if (!$page_display instanceof PageVariantInterface) {
        throw new \LogicException('Cannot render the main content for this page because the provided display variant does not implement PageVariantInterface.');
      }
      $page_display
        ->setMainContent($main_content)
        ->setTitle($title)
        ->addCacheableDependency($event)
        ->setConfiguration($event->getPluginConfiguration());
        ->addCacheableDependency($event);
      // Some display variants need to be passed an array of contexts with
      // values because they can't get all their contexts globally. For example,
      // in Page Manager, you can create a Page which has a specific static
+2 −0
Original line number Diff line number Diff line
@@ -67,6 +67,7 @@ public function setContexts(array $contexts) {
   * {@inheritdoc}
   */
  public function setMainContent(array $main_content) {
    assert(!empty($this->getConfiguration()['required_configuration']), 'Ensure that ::setMainContent() is called with the variant configuration');
    $this->mainContent = $main_content;
    return $this;
  }
@@ -75,6 +76,7 @@ public function setMainContent(array $main_content) {
   * {@inheritdoc}
   */
  public function setTitle($title) {
    assert(!empty($this->getConfiguration()['required_configuration']), 'Ensure that ::setTitle() is called with the variant configuration');
    $this->title = $title;
    return $this;
  }