📅  最后修改于: 2023-12-03 15:14:48.191000             🧑  作者: Mango
在Drupal 8中,以编程方式保存节点非常简单,只需要使用Node类及其保存方法即可。然而有时候我们可能不希望保存某些自定义字段的值。本篇文章将介绍如何实现这一功能。
在Drupal 8中,可以使用hook_ENTITY_TYPE_presave
钩子来进行预操作。该钩子将在节点保存之前被调用,因此我们可以在此钩子中删除或修改某些自定义字段的值。以下是具体实现方法:
hook_ENTITY_TYPE_presave
钩子,其中ENTITY_TYPE
为节点类型。例如,若我们要保存的是article内容类型的节点,则ENTITY_TYPE
应为node.article
。function mymodule_node_presave(NodeInterface $node) {
// 示例代码,不保存自定义字段example_field的值。
$node->set('example_field', NULL);
}
确认你已经添加了所需的自定义字段,以便在保存节点时应用钩子。
保存节点时会调用hook_ENTITY_TYPE_presave
钩子,此时钩子中设定的自定义字段值将被更新、删除或重写,其他节点信息将被保存。
使用hook_ENTITY_TYPE_presave
钩子可以轻松实现在以编程方式保存节点时不保存自定义字段值的需求。通过以下步骤,可以更好地了解如何使用该钩子:
在主题或自定义模块中实现hook_ENTITY_TYPE_presave
钩子。
在钩子中更新、删除或重写需要修改的自定义字段的值。
确保在保存节点时应用该钩子。
以上是本文的全部内容。如果您有任何问题或建议,请在评论区留言。谢谢!