salesforce零基础学习(一百零六)Dynamic Form
本篇参考:https://trailblazer.salesforce.com/ideaview?id=08730000000BroxAAC
https://help.salesforce.com/s/articleView?id=sf.dynamic_forms_overview.htm&type=5
我们在项目中可能会有类似的需求: 甲方爸爸在看了某个表的数据详情页以后说, 这个页面整体符合需求了,但是我们业务上希望的是,当页面中的某个状态为某些值情况下展示某个或者某些section或者展示某些字段,不满足的情况下,section展示或者相关字段展示也没有用,因为业务不看。你们实施团队能不能实现这种的啊?
此时作为开发人员可能只有两条路:
1. 告诉甲方爸爸,这个是salesforce的标准的 page layout,标准功能实现不了这种需求,要么就不做这个需求了吧,也不影响使用;
2. 告诉甲方爸爸,啊,这种需求必须能做,只是需要开发,但是我们可以搞定。
作为开发来说,我们肯定是想往1来推,标准的page layout保证了稳定性以及高可配,方便后续的维护,如果遇见很tough的客户,我们就只能进行了自定制之路。当然,以后如果有类似的需求以后,我们可能就可以通过配置的方式搞定,使用的就是我们今天的主角: Dynamic Form
一. Dynamic Form
我们知道 salesforce 一直致力于 no code / less code的宗旨, 同样的,针对类似的需求,salesforce推出了 dynamic form去最大化的适配动态表单的需求。
有几点优势:
- 和 page layout 进行了分离,在 lightning app build的record page进行配置,section / field 想放在哪里放哪里,不像原来只能按照 page layout展示而展示;
- 可以通过 visibility rule 去 设置 field / section的展示与隐藏的逻辑;
有几点需要注意:
1. dynamic form 目前只支持自定义的 object,标准 object暂时不支持,期待后续的release可以不断的进行拓展;
2. dynamic form 影响的不只是用户所看见的详情页面,当用户进行编辑或者新建/克隆等操作时,同样会遵循 visibility rule。
二. Dynamic Form的使用
1. Dynamic Form只允许在 Lightning App builder中进行使用,当我们找到一个 lightning record page(new/ edit),选择 record detail组件,右侧会展示 Upgrade Now的按钮

2. 通过下图就可以看出来 dynamic form的三大核心功能。
3. dynamic form不会改变 page layout
4. dynamic form有三个维度: accordion / section / field。我们按照需求可以进行不同维度的配置,不同的维度可以进行不同的配置,可看图中描述。

5. field级别除了可以设置显隐以外,还可以设置UI的行为
6. 这里我们做一个简单的demo, is draft为true, goods price隐藏,这里我们针对 goods price设置 field visibility,点击 Advanced 按钮,我们可以看到 设置除了记录字段级别以外,还可以根据 user / permission维度来控制

7. 我们进行了一个 Field Visibility简单配置,点击done即完成了一个配置

结果演示:
1. is draft为false, goodsprice正常展示
2. is draft为true,goodsprice动态的隐藏。

三. 现在项目是否应该用 Dynamic Form
尽管dynamic form很强大,但是我们不是项目中有类似需求就直接上来,如果不对其进行认真的评估,很容易后期出差错,累死自己和团队。所以在是否应该使用之前,我们需要先了解几点:
1. 目前只针对自定义表使用,标准的表不支持,如果客户对UI要求严格,可能达到整体功能不统一;
2. dynamic form拥有很多的 limitation,这些都是在文档中有介绍的,比如不支持 blank space,一个section一个列最多100个字段等等,我们在使用以前一定需要先了解limitation是否影响到了我们的红线;
3. dynamic form经历了去年的beta到今年的正式发布,还是有很多的known issue,官方也列出来了。在使用以前一定先看一下 known issue是否会影响到我们的使用。
总结:dynamic form作为一个高可配的动态表单,相信后续的升级完善以后,对于管理员来说会越来越得到使用,对于开发来说也是一个很好的功能。针对开发来说,使用以前了解好限制,找好workaround方案。 篇中只是简单的描述了一下 dynamic form的使用,实际上会更加强大,感兴趣的小伙伴可以自己来玩了。篇中有错误欢迎指出,有不懂欢迎留言。
salesforce零基础学习(一百零六)Dynamic Form的更多相关文章
- salesforce零基础学习(九十六)Platform Event浅谈
本篇参考:https://developer.salesforce.com/blogs/2018/07/which-streaming-event-do-i-use.html https://trai ...
- salesforce零基础学习(九十六)项目中的零碎知识点小总结(四)
本篇参考: https://developer.salesforce.com/docs/atlas.en-us.216.0.apexcode.meta/apexcode/apex_classes_ke ...
- salesforce 零基础学习(十六)Validation Rules & Date/time
上一篇介绍的内容为Formula,其中的Date/time部分未指出,此篇主要介绍Date/time部分以及Validation rules. 本篇参考PDF: Date/time:https://r ...
- salesforce零基础学习(一百零五)Change Data Capture
本篇参考: https://developer.salesforce.com/docs/atlas.en-us.232.0.api_streaming.meta/api_streaming/using ...
- salesforce 零基础学习(六十八)http callout test class写法
此篇可以参考: https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_classes_restfu ...
- salesforce零基础学习(八十二)审批邮件获取最终审批人和审批意见
项目中,审批操作无处不在.配置审批流时,我们有时候会用到queue,related user设置当前步骤的审批人,审批人可以一个或者多个.当审批人有多个时,邮件中获取当前记录的审批人和审批意见就不能随 ...
- salesforce零基础学习(八十七)Apex 中Picklist类型通过Control 字段值获取Dependent List 值
注:本篇解决方案内容实现转自:http://mysalesforceescapade.blogspot.com/2015/03/getting-dependent-picklist-values-fr ...
- salesforce lightning零基础学习(十五) 公用组件之 获取表字段的Picklist(多语言)
此篇参考:salesforce 零基础学习(六十二)获取sObject中类型为Picklist的field values(含record type) 我们在lightning中在前台会经常碰到获取pi ...
- Salesforce 集成篇零基础学习(一)Connected App
本篇参考: https://zhuanlan.zhihu.com/p/89020647 https://trailhead.salesforce.com/content/learn/modules/c ...
- salesforce零基础学习(一百一十三)Trigger中获取IP地址的过程
本篇参考: https://developer.salesforce.com/docs/atlas.en-us.228.0.apexcode.meta/apexcode/apex_class_Auth ...
随机推荐
- openssl not found 离线安装的openssl问题
离线安装问题 正常我们在Linux中按照 nginx的openssl依赖都是通过 yum来安装的,但是由于一些特殊的服务器公司不让服务器连接互联网,所以就导致我们必须通过离线方式来进行安装,但是我们离 ...
- CTF中的序列化与反序列化
记一些CTF出现的序列化与反序列化的知识点和题目. 序列化和反序列化的概念 序列化就是将对象转换成字符串.字符串包括 属性名 属性值 属性类型和该对象对应的类名. 反序列化则相反将字符串重新恢复成对象 ...
- Microservices==>Service Mesh==>Serverless,走马观花
[0] 始有道 话说图灵开天辟地,冯.诺伊曼造石补天! 始有道道生ML Machine LanguageML生汇编 assembler汇编生编译器 compiler编译器生PL Programming ...
- 常见的嵌入式linux学习和如何选择ARM芯片问答
常见的ARM嵌入式学习问答,设计者和学习者最关心的11个问题: 1. ARM嵌入式是学习硬件好还是学习软件好? 2. 嵌入式软件和硬件,哪一种职位待遇更高?或者说, ...
- docker-03
Docker构建私有registry(仓库) #1 启动registry [root@docker ~]# docker run -d -p 5000:5000 --restart=always -- ...
- SQL语法 - WHERE 子句
WHERE 子句用于规定选择的标准. 语法 SELECT 列名称 FROM 表名称 WHERE 列 运算符 值 下面的运算符可在 WHERE 子句中使用: 操作符 描述 = 等于 <> 不 ...
- Java Lambda 表达式源码分析
基本概念 Lambda 表达式 函数式接口 方法引用 深入实现原理 字节码 为什么不使用匿名内部类? invokedynamic 总结 参考链接 GitHub 项目 Lambda 表达式是什么?JVM ...
- 012 基于FPGA的网口通信实例设计【转载】
一.网口通信设计分类 通过上面其他章节的介绍,网口千兆通信,可以使用TCP或者UDP协议,可以外挂PHY片或者不挂PHY片,总结下来就有下面几种方式完成通信: 图8‑17基于FPGA的网口通信实例设计 ...
- MyBatis的useGeneratedKeys使用
业务需求,用户表为主键自增,添加完用户之后,通过用户ID和角色表进行关联. 问题:由于主键自增,所以在用户添加之前是不知道ID的,当然可以通过查询得到当前的ID,不过需要自己多一步操作. 解决方案:使 ...
- SpringCloud之Config
1.背景 在前的学习中,我们几乎解决了springCloud的所有常规应用,但是大家有没有想过这样一个问题: 是使用微服务后,有非常多的application.yml文件,每个模块都有一个,实际开发中 ...