提问人:Karuna Patel 提问时间:10/8/2020 更新时间:10/11/2020 访问量:934
如何以编程方式设置节点> 我在 drupal 8 节点编辑表单中具有 fid 值的图像实体引用字段值
How to programmatically set node > Image entity reference field value where I have fid value in drupal 8 node edit form
问:
我有一个节点类型“Kaboodle”,其图像字段是媒体实体引用字段。 如果用户在保存节点编辑表单或添加新节点时未在字段上传任何图像,我想在图像字段值中设置默认图像 fid。
如果有人有或分享您的逻辑,请提供解决方案,以便我解决这个问题。
谢谢
答:
0赞
MacSim
10/9/2020
#1
在 中,如果 media 字段的值为空,请将其设置为所需的媒体实体 id(请注意,此媒体实体 ID 在 dev 和 prod 环境中可能不同,您可能需要按 title 属性加载媒体才能获取其 id)。
只需设置字段的值,调用node_save时会自动保存。hook_node_presave(NodeInterface $node)
$node->bundle()
评论
0赞
Karuna Patel
10/9/2020
感谢您的回复和解决方案。我正在hook_entity_presave上做同样的事情并检查实体的捆绑包。为了保存 fid,我使用了以下代码,但它不起作用,并在节点编辑表单上显示消息“无法加载引用的实体”。 在引用字段目标 ID 上设置了 Fil,但仍然不加载图像。$entity->field_cover_image->target_id == $fid;我还尝试在引用字段目标 ID 上设置 $$file 实体,但它也不起作用。请共享在图像类型的媒体实体引用字段上设置 fid 的代码。
0赞
MacSim
10/10/2020
对不起,我看错了,我给出的解决方案是针对图像字段的。在这里,您需要设置媒体实体 ID,而不是文件 ID,hook_node_presave我将编辑第一个答案
1赞
Sharklalu
10/11/2020
#2
如果您不想保存媒体的数据,您甚至可以在节点类型上创建一个预处理hook_preprocess_node__node_type(&$variables)
如果字段为空,则添加媒体。
评论