表单设置验证(应用程序和表单名称唯一性)
Posted
技术标签:
【中文标题】表单设置验证(应用程序和表单名称唯一性)【英文标题】:Form settings validation (application and form name uniqueness) 【发布时间】:2021-03-08 02:33:23 【问题描述】:来自 Orbeon documentation:
应用程序名称。 每个表单定义都有一个应用程序名称,用于标识属于一起的一组表单。在实践中,应用程序名称可能对应于一个项目、一个部门或一个公司。例如,由 Orbeon 构建的所有表单都具有“orbeon”应用程序名称。 注意:根据您的权限,可能已经为您选择了应用程序名称,或者您可以选择一组受限的应用程序名称。
表单名称。每个表单定义还有一个表单名称,用于标识特定应用程序中的唯一表单名称。
由于 orbeon 的持久性 API 通过其应用程序和表单名称检索表单定义,我想对表单设置页面进行一些验证,以防止用户从具有相同应用程序和表单名称的定义中保存第二个现有的。
(我的第一种方法是对持久层进行一些自定义响应,但是 orbeon 无法区分一般持久性错误和验证错误,换句话说,持久层错误的反向传播/对用户的 api 还没有那么成熟,可以这么说。)
那我该怎么做呢?
【问题讨论】:
【参考方案1】:如果我理解正确,您希望阻止表单生成器用户使用已使用的应用程序/表单名称创建新表单。可以阻止用户创建该表单,或者至少提供打开现有表单的选项,而不是创建具有相同应用程序/表单名称的新表单。
一个问题是,在这种情况下,“已使用”是什么意思:我们是在谈论可由该用户在表单生成器中编辑的表单,还是已发布的表单?也许表单生成器应该同时检查两者。
此检查应在表单生成器中的 3 个位置进行:
-
最初创建表单时(最好尽快警告用户)。
当用户打开表单设置对话框重命名表单时。
保存时(即使我们确定在创建表单时不存在具有相同应用程序/名称的表单,同时可能已创建另一个具有相同应用程序/名称的表单)。
在第一种情况下,如果表单生成器中存在具有相同应用程序/名称的表单,表单生成器应为用户提供打开该表单而不是创建新表单的选项。
所以这是一个应该在Form Builder级别实现的功能;它不能仅通过持久性 API 的自定义实现来完成。这已包含在增强请求#818 中。
【讨论】:
您好,谢谢您的回答。我想介绍第二种情况,因为我已经介绍了其余的情况:用户无法通过定义已经存在的表单定义的 app 和 formname 来导入或复制现有的表单 def。所以那部分是我应该以某种方式处理的最后一个部分。提前致谢。 这是有道理的,但确实需要在 Form Builder 中实现。您使用的是 Orbeon Forms CE 还是 PE?如果 Orbeon Forms CE,您是否有时间和兴趣在您身边实施它? -亚历克斯 嗨,Alex,我们大约在 2-3 个月前切换到 PE。但如果不是太费力的话,我想实施它,因为我没有太多时间来完成这项任务。 AFAIK 有一个类似 xml 的结构来定义该表单,也许我可以放一些自定义 javascript 来调用我的持久层中的某些东西,至少这是我的第一种方法。嗯? 实施可能比您想象的要复杂得多,尤其是如果您还不熟悉 Orbeon Forms 使用的技术,例如 XForms,这对于“没有太多时间”来说不是个好兆头任务”;)。或者,您的组织是否已经拥有 Orbeon 的开发支持?如果是这样,他们可以使用该开发支持来赞助该实施。 我明天会提出这个问题,并询问合适的人,谢谢你的想法。尽管我觉得在一些指导下完成它的力量;)以上是关于表单设置验证(应用程序和表单名称唯一性)的主要内容,如果未能解决你的问题,请参考以下文章