Meteor autoform Form 隐藏字段不呈现 defaultValue 且不保存

Meteor autoform Form hidden fields not rendering defaultValue and not saving

我的自动表单架构中有两个隐藏字段,定义如下所示。我希望将这两个字段与其他字段一起保存,而不将它们显示给应用程序用户。但是我从呈现的自动表单中注意到 html 这两个隐藏字段没有价值,它们也不会与其他字段一起保存到数据库中。不确定我在这里可能遗漏/错了什么?感谢您的帮助

  Invoice = new SimpleSchema({
    clientid: {
      type: String,
      optional: true
    },
    total: {
      type: String,
      label: 'Total Amount',
      optional: true
    },
    tax: {
      type: String,
      label: 'Taxes',
      optional: true
    },
    category: {
      type: String,              
      optional: true,
      autoform: {
        type: "hidden",                
        label: false
      },
      defaultValue: 'Test Category'
    }
  });

  {{> quickForm id="invoiceForm" buttonContent="Insert" buttonClasses="btn btn-primary btn-sm" schema=Invoice type="method" meteormethod="saveInvoice"}}

在我看来,最好将与表单相关的逻辑保留在 quickform 模板中,例如,您可以在另一种表单中重用您的架构。

我建议您执行以下操作:

... 
},
category: {
   type: String,              
   optional: true,
   defaultValue: 'Test Category'
}
...

并使用 omitFields 子句(注意您可以指定要省略的多个字段,用逗号分隔):

{{> quickForm id="invoiceForm" buttonContent="Insert" buttonClasses="btn btn-primary btn-sm" schema=Invoice type="method" meteormethod="saveInvoice" omitFields="category, foo, bar, ..."}}

我注意到您使用 method 作为表单类型。如果您手动设置保存数据的方法,您可以考虑在方法本身内指定默认值和自动值。它会给你更多的自由和控制你的数据。

您是否尝试过不将类别字段设为可选? defaultValue 和字段 optional.

之间似乎存在概念性问题

我认为您的 aldeed 模式中不能有一个字段将作为隐藏字段呈现/保存在表单中。所以我建议你通过会话传递数据(你最初想传递一个隐藏字段)。

例如,如果您使用autoform >> meteormethod 来保存表单,那么您可以在服务器方法中保存会话内容。如果您不使用方法,那么您可能希望通过 Autoform.hooks >> onSubmit

传递隐藏数据