0

我以为这很容易,但我很难过。

我有一个包含 id 字段的自定义内容类型。我使用基本页面模板呈现这些。

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

这将是直接 php 中的几行代码,在 Drupal 8 中它不会那么复杂,twig 可以吗?

4

2 回答 2

1

我设法在这里找到了解决方案

我重新发布它以防它对其他人有用。

如果您正在生成自定义块,您可以通过块构建函数中的路由系统访问内容字段,如下所示:

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']],
      ),
   );
}
于 2016-06-22T12:36:56.103 回答
0

我认为你可以通过 HOOK_preprocess 达到你想要的。

利用:

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

从内容类型访问您的变量并将其传递给您的函数 oder 模板。

于 2016-06-21T14:01:58.370 回答