ampersand icon indicating copy to clipboard operation
ampersand copied to clipboard

CLI-generated form doesn't respect `required` property of the model

Open e2jk opened this issue 10 years ago • 0 comments

Extract of a model called "object":

    props: {
        id: 'any',
        abbreviation: ['string', true, ''],
        description: ['string', false, ''],

Extract of the form generated by $ ampersand gen form client/models/object.js:

module.exports = FormView.extend({
    fields: function () {
        return [
            new InputView({
                label: "Abbreviation",
                name: "abbreviation",
                value: this.model.abbreviation || "",
                required: false,
                placeholder: "Abbreviation",
                parent: this
            }),
            new InputView({
                label: "Description",
                name: "description",
                value: this.model.description || "",
                required: false,
                placeholder: "Description",
                parent: this
            }),

Both InputView have required: false, while the first one should have been required: true.

The input template is located at lib/templates/input.js and contains the following:

 required: {{{ required }}},

Meaning that the value "false" is not hardcoded. Investigating further, the value of the required variable seems to be determined in lib/gen-types/form.js:

 required: !!definition.required,

That's about as far as I get with my current understanding of Ampersand.js. Does anyone have an idea what's going wrong in this case?

e2jk avatar Feb 18 '15 14:02 e2jk