如果表单不适用,则跳过不存在的会话

Skip non existing sessions for a form if they do not apply

我有一个表单网站页面,它会使用从表单网站页面输入的信息自动填写所需的表格。我想弄清楚的是,如果 #session.checkout.info.firstname_2# 不存在,您如何跳过它而不让表格担心它?

所以有两个字段,一个用于所有者,另一个用于共同所有者,如果只有一个所有者,则页面不会打开表单,因为它正在寻找要作为 firstname_2 输入的内容,但是如果所有者和共同所有者都已输入它工作正常,因为所有字段都已输入。有谁知道我怎样才能让它只担心从第一个表单提交的字段而忽略尚未输入的会话?

<cfif len(#session.checkout.info.firstname_2#)>
    <cfpdfformparam 
      name="co-owner name" 
      value="#session.checkout.info.firstname_2# #session.checkout.info.middlename_2# #session.checkout.info.lastname_2#">
</cfif>

您可以使用isDefined来检查变量是否不存在。

<cfif isDefined("session.checkout.info.firstname_2")>
  <cfpdfformparam 
    name="co-owner name" 
    value="#session.checkout.info.firstname_2# #session.checkout.info.middlename_2# #session.checkout.info.lastname_2#">
</cfif>

如果您还需要检查长度,您可以将上面的 if 与您编写的内容结合起来。

一般来说,使用 structKeyExists() 是更好的做法,但是当有多个项目可能不存在时,它可能会很麻烦,即 structKeyExists(session, 'checkout') && structKeyExists(session.checkout, 'info') && structKeyExists(session.checkout.info, 'firstname_2')