2016-01-29 1 views
0

J'ai créé un module personnalisé qui utilise un bloc personnalisé pour afficher une liste de noeuds (je ne peux pas utiliser les vues D8 dans ce cas particulier). A l'intérieur du modèle brindille bloc que je dois filtrer cette liste sur la nid actuelle (id noeud de la page en cours) et je passe la valeur à la brindille de cette façon:Drupal 8 passant le nid actuel au modèle de bloc

$node = \Drupal::routeMatch()->getParameter('node'); 
$nid = $node->nid->value; 
return array(
     'currentnid' => $nid, 
    ); 

Tout fonctionne bien, mais changement de page le nid passé au modèle de bloc est toujours le même. Je pense que cela est lié à la mise en cache des modèles: en effaçant le cache et en rechargeant la page, j'obtiens la valeur correcte pour la page en cours, mais en passant à une autre page, je reçois toujours la même chose! Y at-il quelque chose que je peux faire pour empêcher que la valeur nid soit mise en cache? Je pense que la meilleure solution serait d'obtenir la valeur actuelle nid directement à l'intérieur du modèle, mais je suis dans le bloc personnalisé et je ne sais pas comment l'obtenir. Une idée? J'ai déjà vérifié la sortie kint() et la page actuelle nid n'est pas présente au niveau du modèle de bloc.

+0

Peut-être que vous devriez demander sur http://drupal.stackexchange.com/ – malcolm

+0

Merci beaucoup @malcolm je ne l'ai pas Connaissez ce site, je vais essayer à coup sûr. – Gabriele

Répondre

1
<?php 
namespace Drupal; 
$node_v1 = \Drupal::request()->attributes->get('node'); 
$node_v2 = \Drupal::routeMatch()->getParameter('node') 

?> 
+0

vous pouvez obtenir en utilisant ce – vinny

0

dans votre tableau de construction essayez d'utiliser les balises de cache avec votre JNV actuelle

return array(
    'currentnid' => $nid, 
    '#cache' => [ 
     'tags' => ['node:'.$nid], 
    ], 
);