Meteor AutoForm set optional field to be required

懵懂的女人 提交于 2019-12-13 19:21:42

问题


I've the following (simplified) SimpleSchema:

EventSchema = new SimpleSchema({
    eventType: {
        type: String
    },
    kicker: {
        type: String
    },
    kicker2: {
        type: String,
        optional: true
    }
});

With this I'm using AutoForm to generate a insert form. Here is a simplified version of it:

{{#autoForm schema="EventSchema" type="method" meteormethod="addEvent"}}
    {{> afFieldInput name="eventType" options=getSubstitutionEventTypes type="select-radio-inline"}}

    {{> afFieldInput name="kicker" type="select" options=this}}

    {{> afFieldInput name="kicker2" type="select" options=this}}
{{/autoForm}}

As I'm using this Schema in an other autoForm where I don't have to input "kicker2", I've set this field to be optional. But in the form mentioned above, this field is required too. So how can I override the optional setting for a field in a specific form?

I've already tried the following, but it didn't work (required isn't rendered in the HTML):

{{> afFieldInput name="kicker2" type="select" options=this required="required"}}

Thanks in advance!


回答1:


You have some tricks to have an optional value depending on situations, a nice one would be to set the optional value on the return of a function, giving something like this:

EventSchema = new SimpleSchema({
    eventType: {
        type: String
    },
    kicker: {
        type: String
    },
    kicker2: {
        type: String,
        optional: function() {
            return (! this.isInsert)
        }
    }
});

So it is optional on update but not on insert (you can use whatever means to customize it). Another way to have different validation rules between forms is simply by creating a specific schema for a given form and then having autoForm(schema=yourSpecificSchema ... instead of autoForm(collection="Meteor.users". Do not forget to register an helper so your schema is accessible from your form. You can refer on the official documentation for more details: https://github.com/aldeed/meteor-autoform#non-collection-forms



来源:https://stackoverflow.com/questions/32112599/meteor-autoform-set-optional-field-to-be-required

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!