entityManager = $entity_manager; $this->languageManager = $language_manager; $this->renderer = $renderer; $this->entityTypeManager = $entity_type_manager; } /** * {@inheritdoc} */ public static function create(ContainerInterface $container) { return new static( $container->get('entity.manager'), $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]); $view_builder = $this->entityTypeManager()->getViewBuilder('node'); $renderable = $view_builder->view($entity, 'default'); $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; } }