2016-06-21 65 views
0

我认为这很容易,但我很难过。将参数从内容类型传递到模块

我有一个包含id字段的自定义内容类型。我用一个基本的页面模板来渲染它们。

我写了一个小模块,它创建了一个填充了来自外部API的数据的块。一切工作,除了我似乎无法弄清楚如何将ID的值从给定页面的内容传递到我的模块,以便它可以进行API调用。

这将是直线PHP中的几行代码,它不能在Drupal 8和Twig中复杂吗?

回答

0

我想你可以用HOOK_preprocess达到你想要的。

使用:

YOUR_MODULE_preprocess_node(&$variables){ ... } or 
YOUR_MODULE_preprocess_block(&$variables){ ... } 

从内容类型访问您的变量,并把它传递给你的函数模板奥德。

+0

任何的例子吗?我能找到的唯一一个将模块中的变量传递回模板。我需要先通过另一种方式。 – raf

1

我设法找到一个解决方案here

我重新张贴在情况下,它是别人有用。

如果生成自定义模块,你可以通过路由系统访问内容字段中输入您块构建功能里面是这样的:

public function build() { 

    if ($node = \Drupal::routeMatch()->getParameter('node')) { 
     $field_my_custom_value = $node->field_my_custom_value->value; 
    } 

    //do something with the variable, like make the API call 

    //Make sure to set the cache to the context or even to zero if you need 
    return array(
     '#markup' => $this->t('my content to render'), 
     '#cache' => array(
     'contexts' => ['contexts' => ['route']], 
    ), 
    ); 
} 
相关问题