You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何删除Drupal用户多字段中的单个链接值

从Drupal用户多值链接字段删除指定条目

嘿,我来帮你搞定这个问题!要从用户实体的field_links多值字段里删除指定的链接(比如你说的link1),得注意别像你原来的代码那样把实体对象覆盖成字段值数组——咱们得保留实体引用才能修改并保存。下面是完整的实现步骤:

步骤1:正确加载用户实体并获取字段数据

首先加载目标用户实体,单独取出字段的所有条目,别覆盖实体对象:

// 加载ID为28的用户实体(保留实体对象,这很重要!)
$user = \Drupal\user\Entity\User::load(28);
// 获取field_links字段的所有条目数据
$current_links = $user->get('field_links')->getValue();

步骤2:筛选掉要删除的目标链接

遍历字段条目,根据你的需求(比如链接的URI、标题)过滤掉要删除的项。这里分两种常见情况:

情况A:根据链接的URI删除

如果要删除的是uri为link1的链接:

// 过滤掉uri等于"link1"的条目
$updated_links = array_filter($current_links, function($link_item) {
    return $link_item['uri'] !== 'link1';
});

情况B:根据链接的标题删除

如果要删除的是title为link1的链接:

// 过滤掉标题等于"link1"的条目
$updated_links = array_filter($current_links, function($link_item) {
    return $link_item['title'] !== 'link1';
});

步骤3:更新字段并保存实体

把过滤后的条目重新设置回字段,然后保存实体让修改生效:

// 用array_values重置数组索引(多值字段需要连续的索引)
$user->set('field_links', array_values($updated_links));
// 保存用户实体,确保修改持久化
$user->save();

注意事项

  • 确保当前执行代码的用户拥有修改目标用户实体的权限,不然save()操作会失败。
  • 如果你不确定字段条目的结构,可以用print_r($current_links)输出看看,确认要判断的键名(比如是否有uri、title等)。

内容的提问来源于stack exchange,提问作者thwip

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 23:44:07