【问题标题】:Unpredictable results from hook_entity_update in Drupal 8Drupal 8 中 hook_entity_update 的不可预测结果
【发布时间】:2016-03-22 16:28:31
【问题描述】:

这是我第一次尝试 Drupal 8,我被难住了。

在更新节点后,我试图在文件字段中获取文件的文件名(以及它在磁盘上的位置,如果可能的话)。现在我正在实现 hook_entity_update 并且有时会使用以下代码获得意外的实体 ID:

function mymodule_entity_update(Drupal\Core\Entity\EntityInterface $entity)
{
    die($entity->id());
}

如果我更新节点并更改文件字段之外的其他字段,它会打印节点的实体 ID。

如果我更新节点并删除/替换文件字段中的文件,它会打印文件的实体 ID。

我希望它总是打印节点的实体 id,所以我显然不明白这里的东西。

最终游戏是在节点更新后将文件字段中的文件复制到特定位置,但我无法可靠地获取我期望的值。如果有人可以帮助我了解正在发生的事情,我将不胜感激。

【问题讨论】:

    标签: drupal drupal-8


    【解决方案1】:

    找出我的问题。

    当我更新图像字段时,它首先更新文件实体,然后是节点实体。所以第一次运行钩子实现是 File 实体。

    为了只作用于 Node 实体,我首先检查它是否是 Node 实体。

    function mymodule_entity_update(Drupal\Core\Entity\EntityInterface $entity)
    {
        if($entity->getEntityTypeId() == 'node'){
            die($entity->id()); // prints node id only
        }
    }
    

    对于我需要做的事情,既然我知道发生了什么,那么检查它是否是正在更新的文件实体对我来说更有用。

    【讨论】:

      猜你喜欢
      • 2011-06-26
      • 2011-11-30
      • 1970-01-01
      • 2018-03-11
      • 2015-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多