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 '18 at 19:34
  • Thought I tired that but apparently not. Thanks! – iamamused Nov 22 '18 at 19:36

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 '18 at 2:24

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

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