我的autoform Schema中有两个隐藏字段,如下所示。我希望将这两个字段保存到其他字段,而不是将它们显示给app用户。但是我注意到autoform渲染的html中两个隐藏的字段没有任何价值,他们也不会将其他字段保存到DB。不确定我在这里可能缺少/错了什么?谢谢你的帮助
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"}}
答案 0 :(得分:3)
我不认为您可以在您的aldeed Schema中有一个字段,它将在表单中呈现/保存为隐藏字段。因此,我建议您通过Sessions传递数据(您最初希望传递一个隐藏字段)。
例如,如果您使用的是autoform>> meteormethod保存表单,然后您可以在服务器方法中保存会话内容。如果您没有使用方法,那么您可能希望通过Autoform.hooks>>传递隐藏数据。 onSubmit
答案 1 :(得分:1)
在我看来,最好将与表单相关的逻辑保留到:
模板,例如,您将以其他形式重用您的模式。
我建议您执行以下操作:
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, ..."}}
作为表单类型。如果要手动设置保存数据的方法,可以考虑在方法本身内指定默认值和自动值。它将为您提供更多自由和控制数据。
答案 2 :(得分:0)
您是否尝试过不将类别字段设为可选项?拥有defaultValue
并将字段设为optional
之间似乎存在概念性问题。