Drupal 8 - Afficher un noeud via le code
Pour afficher avoir le renderable array d'un noeud dans le code, rien de plus simple via le service entity_type.manager :
$node = Node::load(1); $node_rederable = \Drupal::service('entity_type.manager')->getViewBuilder('node')->view($node);
Pour utiliser un autre view_mode :
$node = Node::load(1); $node_rederable = \Drupal::service('entity_type.manager')->getViewBuilder('node')->view($node, 'embed');
Évidement le plus propre et de passer par l'injection de dépendance, voici une version simplifiée de mon contrôleur :
namespace Drupal\mon_module\Controller; use Drupal\Core\Controller\ControllerBase; use Drupal\Core\Entity\EntityTypeManager; use Drupal\node\Entity\Node; use Symfony\Component\DependencyInjection\ContainerInterface; /** * Class PageController. */ class PageController extends ControllerBase { /** * @var \Drupal\Core\Entity\EntityTypeManager */ protected $entityTypeManager; public function __construct(EntityTypeManager $entityTypeManager) { $this->entityTypeManager = $entityTypeManager; } public static function create(ContainerInterface $container) { return new static($container->get('entity_type.manager')); } public function frontpage() { $node = Node::load(1); $page = $this->entityTypeManager->getViewBuilder('node')->view($node, 'embed'); return [ 'page' => $page, ]; } }