web-dev-qa-db-fra.com

Comment passer des variables à un modèle Twig situé dans le module?)

Je voudrais passer une variable à un modèle Twig Twig $ qui est situé dans mon module personnalisé (pas dans un thème).

Après cette réponse et cette réponse , j'ai écrit ce code dans mymodule.module:

function mymodule_preprocess_page(array &$variables) {
  $variables['hello'] = 'world';
}

function mymodule_theme_suggestions_node_add_list(array $variables) {
  $suggestions = [];
  $suggestions[] = 'node_add_list__' . 'custom';
  return $suggestions;
}

function mymodule_theme() {
  return [
    'node_add_list__custom' => [
      'base hook' => 'node_add_list',
    ],
  ];
}

Ensuite, j'ai ajouté dans mymodule/templates/node-add-list - custom.html.twig:

myvar: {{ hello }}

Cependant, rien n'apparaît après "myvar:" lorsque je rafraîchis la page. Je mentionne que j'ai vidé le cache .

Y a-t-il quelque chose de spécifique à gérer lorsque nous utilisons hook_preprocess_page() avec hook_theme_suggestions_HOOK()/hook_theme()?

1
Kwadz

Tu dois function MYMODULE_preprocess_node_add_list.

function MYMODULE_preprocess_node_add_list(array &$variables) {
  $variables['hello'] = 'world';
}

Ce hook de prétraitement est en fait appelé HOOK_preprocess_HOOK . Voir le dernier HOOK dans son nom? Vous devez cibler le 'base hook' lequel est node_add_list. Prétraitez donc cela au lieu de la page.

2
leymannx