你怎么检查drupal 8中的字段是否为空?

ljo*_*olz 6 php drupal drupal-8

我在基本页面的内容类型中添加了一个字段.这是一个选择框,可以选中或取消选中,具体取决于页面是否为"入门"类型.如果页面是一个入门页面,我想在html中的body元素中添加"get-started"类,即选中该框.我想在.theme文件中执行此操作.所以基本上我想检查字段是否为空,如果不是将该类添加到body元素.任何帮助将非常感激.

Onk*_*tem 14

要检查字段是否为空,您可以使用内置方法isEmpty().

例如:

if (!$entity->get('category')->isEmpty()) {
  /** @var EntityInterface $category */
  $category = $entity->get('category')->entity;
  $row['category']['data'] = [
    '#type' => 'link',
    '#title' => $category->get('name')->value,
    '#url' => $category->toUrl(),
  ];
}
else {
  $row['category'] = NULL;
}
Run Code Online (Sandbox Code Playgroud)


小智 5

这个解决方案对我有用,field_poster没有或最大 1 值。

{% if content.field_poster[0] is not empty %}
Run Code Online (Sandbox Code Playgroud)


Fra*_*bin 0

您可以使用 template_preprocess_node ( https://api.drupal.org/api/drupal/core%21modules%21node%21node.module/function/template_preprocess_node/8 ) 函数来选取正在加载的节点的可用变量。

在此函数中,您可以像这样访问节点的字段:

$variables['content']['field_some_name']
Run Code Online (Sandbox Code Playgroud)

如果检查通过,您可以添加一些自定义变量以在树枝模板中使用:

$variables['something'] = true;
Run Code Online (Sandbox Code Playgroud)

或者:直接在节点树枝模板中检查字段的值。问题是您是否真的有必要将所需的类添加到 body 元素中。也许将其添加到节点的文章标签中可以完成这项工作,这至少会更容易检查。

如果您确实需要将其添加到 body 元素中,我想您需要使用 template_preprocess_page 函数,并首先检查正在加载的页面是否是一个节点,然后找出哪个节点等。