在 Drupal 8 视图模板中访问原始数据

Acces raw data in Drupal 8 view template

在视图模块 (views-view-field.html.twig) 的覆盖模板中,我正在尝试访问字段的原始数据。

在doc文件中,我们可以读到:

 * Available variables:
...
 * - fields: A list of fields, each one contains:
...
 *   - raw: The raw data for the field, if it exists. This is NOT output safe.
...

但它总是空的。

{{ dump(fields.field_myfieldname) }}

打印对象(stdClass)[1899] ...

{{ dump(fields.field_myfieldname.raw) }}

打印空值

我希望 raw 从字段的值构建文件路径。

为什么是空的? 有没有其他方法可以获取模板中某个字段的原始数据?

编辑: 我正在尝试做这样的事情:

 <img src="/path/to/image/{{ fields.title.raw | escape('uri')}}.jpg" /> 

为什么这么难?

与其在 twig 文件中构建内容,不如预处理数据,然后在 twig 文件中引用新变量。

例如,如果您的自定义主题名为 mytheme,那么在您的 mytheme.theme 文件中,添加以下函数

function mytheme_preprocess_field(&$variables, $hook) {

  if( $variables['field_name'] === 'field_myfieldname') {

    // manipulate the data and return it in a variable.

    $data = $variables['items'][0]['content']['#context']['value'];

    $variables['customfield'] = "Whatever you want, can be HTML";

    }
}

然后在你的field--node--field-myfieldname.html.twig文件中,调用你的新变量

{{ customfield }}

如果您要返回 html,请像这样调用您的新变量

{{ customfield|raw }}