languageManager = $language_manager; $this->renderer = $renderer; $this->entityTypeManager = $entity_type_manager; } /** * {@inheritdoc} */ public static function create(ContainerInterface $container) { return new static( $container->get('language_manager'), $container->get('renderer'), $container->get('entity_type.manager') ); } /** * Hello. * * @return string * Return Hello string. */ public function getHome() { // $path = \Drupal::config('system.site')->get('page.front'); // $params = Url::fromUri("internal:" . $path)->getRouteParameters(); // $entity_type = key($params); // $entity = $this->entityTypeManager()->getStorage($entity_type)->load($params[$entity_type]); $nid = 1; // TODO: home nid should be a setting $node_storage = \Drupal::entityTypeManager()->getStorage('node'); $node = $node_storage->load($nid); $view_builder = $this->entityTypeManager()->getViewBuilder('node'); $renderable = $view_builder->view($node, 'home_full'); $rendered = $this->renderer->executeInRenderContext(new RenderContext(), function () use ($renderable) { return render($renderable); }); $data['rendered'] = $rendered; $data['#cache'] = [ 'max-age' => \Drupal\Core\Cache\Cache::PERMANENT, 'tags' => ['materio-home-cache'], 'contexts' => [ 'languages:language_content' ] ]; $response = new JsonResponse(); $response->setData($data); // $response = new CacheableJsonResponse($data); // $response->addCacheableDependency(CacheableMetadata::createFromRenderArray($data)); // $response->addCacheableDependency(CacheableMetadata::createFromRenderArray($renderable)); return $response; } }