如何在Dynamics门户网页中通过Liquid引用一对多关系中的字段?
在Dynamics CRM门户中用Liquid关联用户与外部身份记录
我之前在项目里刚好碰到过一模一样的需求,给你梳理下具体的实现步骤和需要注意的点:
首先,核心就是微软文档里提到的通过关系架构名加载关联实体,这个是关键,很多人容易在这里踩坑——必须用关系的架构名称而非显示名称。
步骤1:确认关系架构名称
你需要先找到用户(systemuser)和外部身份(externalidentity)之间的关联关系架构名:
- 登录Dynamics CRM,进入解决方案,找到用户实体(System User)
- 切换到「关系」标签,找到和外部身份(External Identity)的关联关系
- 查看该关系的架构名称,通常格式类似
systemuser_externalidentity(记下来,后面Liquid代码要用到)
步骤2:编写Liquid代码获取关联数据
下面是直接可用的代码示例,假设你要获取当前登录用户的所有关联外部身份的username字段:
{% comment %} 获取当前门户登录用户 {% endcomment %} {% assign currentPortalUser = liquid_user %} {% comment %} 通过关系架构名加载关联的外部身份集合 {% endcomment %} {% assign userExternalIdentities = currentPortalUser["systemuser_externalidentity"] %} {% if userExternalIdentities.size > 0 %} <h3>关联的外部身份:</h3> <ul> {% for identity in userExternalIdentities %} <li>用户名: {{ identity.username }}</li> {% comment %} 如果需要其他字段,直接用架构名调用即可,比如identity.issuer {% endcomment %} {% endfor %} </ul> {% else %} <p>当前用户未关联任何外部身份记录</p> {% endif %}
如果你只需要获取第一个关联的外部身份,可以简化成:
{% assign firstExternalIdentity = liquid_user["systemuser_externalidentity"] | first %} {% if firstExternalIdentity %} <p>关联的外部用户名: {{ firstExternalIdentity.username }}</p> {% endif %}
关键注意事项
- 权限配置:必须确保当前门户用户对应的安全角色有外部身份实体的读取权限,否则即使存在关联记录,Liquid也无法获取到数据。可以在门户管理的「实体权限」中给目标角色分配
externalidentity实体的读取权限。 - 字段架构名:所有字段调用都要用架构名称,比如
username是外部身份实体中对应字段的架构名,不要用显示名称(比如可能显示为“用户名”,但代码里必须用username)。 - 集合判断:因为一个用户可能关联多个外部身份,所以建议先判断集合是否为空再遍历,避免出现空指针错误。
内容的提问来源于stack exchange,提问作者AK3800
相关产品推荐
相关产品推荐

