I've created a page layout using panels in the Drupal admin UI (page_machine_id). I'm trying to load that page into a custom controller like so and render one of the variants (Drupal 8):

public function profile() {
    $page = \Drupal\page_manager\Entity\Page::load('page_machine_id');
    $variants = $page->getVariants();
    $pageVariant = end($variants);
    $viewer = new \Drupal\page_manager\Entity\PageVariantViewBuilder();
    $pageArray = $viewer->view($pageVariant);
    return new Response(render($pageArray));

This renders the page content correctly, but does not include the theme wrapper around it and I can't figure out how to get the theme to show.


  • Just return $pageArray; should be enough
    – Clive
    Nov 22, 2018 at 19:34
  • Thought I tired that but apparently not. Thanks!
    – iamamused
    Nov 22, 2018 at 19:36

1 Answer 1


solution is

    return $pageArray;

Adding Response bypasses Drupals rendering.

  • Yes, you can return either a render array or a Symfony Response object.
    – Kevin
    Nov 23, 2018 at 2:24

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.