Afficher une vue dans un module Drupal

Drupal 8

Afficher une vue dans un module Drupal

Soumis par Antoine le mar 07/04/2020 - 18:30

Principes

La classe views permet d'afficher des vues. Il faut donc commencer par la charger

use Drupal\views\Views;

Ensuite on récupère la vue

$view = Views::getView('liste_livre');

Enfin on génère le render array

    if (is_object($view)) {
      $variable['view'] = $view->buildRenderable('id mode d affichage', [tableau d arguments à passer à la vue]);
    }

Exemples

Dans l'exemple ci-dessous, on considère que vous avez déjà un contrôleur, un gabarit et une route. Nous allons charger une, vue dont l'identifiant est "liste_appartement", et qui a été ajouté lors de l'installation du module grâce à un fichier yml. Cette vue a été paramétrée pour afficher la liste d'appartements en fonction d'un identifiant d'immeuble (filtre contextuel). Plus haut dans le code, nous avons récupéré l'identifiant de l'immeuble. Maintenant, on souhaite afficher cette vue.

Dans le contrôleur :

$args = [$id_immeuble];
$view = Views::getView('liste_appartement');
if (is_object($view)) {
  $variable['view'] = $view->buildRenderable('default', $args);
}

Dans twig :

{{$variable['view']}}

 

Version