首页 > 解决方案 > Drupal 8:以编程方式更新节点不会更新视图中节点的状态

问题描述

我有一个“代理”节点类型,它有一个名为“has_subscription”的布尔字段。

然后我有一个视图,它只显示“has_subscription”为真的代理机构。

都好。

我正在以编程方式更新字段的值,如下所示:

$node = node_load($nid);
$node->set("field_has_subscription", 1);
$node->save();

如果我随后编辑节点,我可以看到布尔字段的复选框现在已选中。伟大的。

但是,视图仍未显示此节点。只有当我保存节点编辑页面时它才会开始出现。

有什么我需要添加到代码中的吗?

标签: drupal-8drupal-views

解决方案


将节点设置为在保存时发布

use Drupal\node\Entity\Node;

$node = Node::load($nid); 
//set value for field
$node->field_has_subscription->value = TRUE;
// set node to publish 
$node->setPublished(TRUE);
//save to update node
$node->save();

推荐阅读