Inject a service in custom class:
with DI for renderer
<?php namespace Drupal\mh_fs\Controller; use Drupal\Core\DependencyInjection\ContainerInjectionInterface; use Symfony\Component\DependencyInjection\ContainerInterface; use Drupal\Core\Render\Renderer; use Symfony\Component\HttpFoundation\Response; /** * Class HotelRenderedController. */ class HotelRenderedController implements ContainerInjectionInterface { protected $renderer; public function __construct( Renderer $renderer) { $this->renderer = $renderer; } public static function create(ContainerInterface $container) { return new static( $container->get('renderer') ); } /** * Content. * * @param null $nid * * @return string * Return Hotel rendered as string. * @throws \Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException * @throws \Drupal\Component\Plugin\Exception\PluginNotFoundException */ public function content($nid = NULL) { $output = ''; if ($nid) { $view_mode = 'full'; $view_builder = \Drupal::entityTypeManager()->getViewBuilder('node'); $storage = \Drupal::entityTypeManager()->getStorage('node'); $node = $storage->load($nid); $build = $view_builder->view($node, $view_mode); $output = $this->renderer->render($build); } return new Response($output); } }
with DI for entity_type.manager service
<?php namespace Drupal\mh_fs\Controller; use Drupal\Core\DependencyInjection\ContainerInjectionInterface; use Symfony\Component\DependencyInjection\ContainerInterface; use Drupal\Core\Render\Renderer; use Drupal\Core\Entity\EntityTypeManager; use Symfony\Component\HttpFoundation\Response; /** * Class HotelRenderedController. */ class HotelRenderedController implements ContainerInjectionInterface { protected $renderer; protected $entityTypeManager; public function __construct( Renderer $renderer, EntityTypeManager $entity_type_manager) { $this->renderer = $renderer; $this->entityTypeManager = $entity_type_manager; } public static function create(ContainerInterface $container) { return new static( $container->get('renderer'), $container->get('entity_type.manager') ); } /** * Content. * * @param null $nid * * @return string * Return Hotel rendered as string. * @throws \Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException * @throws \Drupal\Component\Plugin\Exception\PluginNotFoundException */ public function content($nid = NULL) { $output = ''; if ($nid) { $view_mode = 'full'; //$view_builder = \Drupal::entityTypeManager()->getViewBuilder('node'); $view_builder = $this->entityTypeManager->getViewBuilder('node'); //$storage = \Drupal::entityTypeManager()->getStorage('node'); $storage = $this->entityTypeManager->getStorage('node'); $node = $storage->load($nid); $build = $view_builder->view($node, $view_mode); $output = $this->renderer->render($build); } return new Response($output); } }
Category: