2016-01-29 41 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], 
    ], 
);