2016-01-29 40 views
0

我已经创建了一个自定义模块,它使用自定义块来显示节点列表(在这种情况下我不能使用D8视图)。 里面的块树枝模板我需要过滤当前nid(当前页面的节点ID),这个名单,我传递值以这种方式小枝:Drupal 8将当前nid传递给块模板

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

一切正常,但传递给块模板的更改页面nid仍然相同。我认为这与模板缓存有关:通过清除缓存并重新加载页面,我获得当前页面的正确值,但移动到另一页面,我仍然获得相同的nid! 有什么我可以做的,以防止nid价值被缓存? 我认为最好的解决方案是直接在模板中获取当前的nid值,但我在自定义块内,我不知道如何获取它。任何想法?我已经检查了kint()输出,并且当前页面nid未出现在块模板级别。

+0

也许你应该问上http://drupal.stackexchange.com/ – malcolm

+0

非常感谢@malcolm我没有知道那个网站,我会尽力的。 – Gabriele

回答

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

?> 
+0

你可以使用这个 – vinny

0
在构建阵列

尝试使用高速缓存标记与您现有的NID

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