Использовать автоформу для создания формы регистрации пользователя

Я использовал схему ниже с автоформой, но моя форма не отображается и возвращает ошибку. Как исправить мою форму на основе схемы, чтобы создать пользователя и профиль с одной формой в meteor-autoform.

Я был создан схема на основе этого примера.

Схема:

UserProfile = new SimpleSchema({
    name: {
        type: String,
        label: "Name"
    },
    family: {
        type: String,
        label: "Family"
    },
    address: {
        type: String,
        label: "Address",
        optional: true,
        max: 1000
    },
    workAddress: {
        type: String,
        label: "WorkAddress",
        optional: true,
        max: 1000
    },
    phoneNumber: {
        type: Number,
        label: "Phone Number",
        optional: true
    },
    mobileNumber: {
        type: Number,
        label: "Phone Number"
    },
    birthday: {
        type: Date,
        optional: true
    },
    gender: {
        type: String,
        allowedValues: ['Male', 'Female'],
        optional: true
    },
    description: {
        type: String,
        label: "Description",
        optional: true,
        max: 1000
    }

});
User = new SimpleSchema({
    username: {
        type: String,
        regEx: /^[a-z0-9A-Z_]{3,15}$/
    },
    emails: {
        type: [Object],
        // this must be optional if you also use other login services like facebook,
        // but if you use only accounts-password, then it can be required
        optional: true
    },
    "emails.$.address": {
        type: String,
        regEx: SimpleSchema.RegEx.Email
    },
    "emails.$.verified": {
        type: Boolean
    },
    createdAt: {
        type: Date,
        optional: true
    },
    profile: {
        type: UserProfile,
        optional: true
    },
//    // Add `roles` to your schema if you use the meteor-roles package.
//    // Option 1: Object type
//    // If you specify that type as Object, you must also specify the
//    // `Roles.GLOBAL_GROUP` group whenever you add a user to a role.
//    // Example:
//    // Roles.addUsersToRoles(userId, ["admin"], Roles.GLOBAL_GROUP);
//    // You can't mix and match adding with and without a group since
//    // you will fail validation in some cases.
//    roles: {
//        type: Object,
//        optional: true,
//        blackbox: true
//    }
//    // Option 2: [String] type
//    // If you are sure you will never need to use role groups, then
//    // you can specify [String] as the type
    roles: {
        type: [String],
        optional: true
    }
});

А также это мой код автоформ:

<template name="addUser">
    {{#autoForm schema=User type="method" meteormethod="addUser" id="addUserForm"}}
        <fieldset>
            <legend>add user</legend>
            {{> afQuickField name='username'}}
            {{> afQuickField name='emails[0].address'}}
            {{> afQuickField name='profile.name'}}
            {{> afQuickField name='profile.family'}}
            {{> afQuickField name='profile.address'}}
            {{> afQuickField name='profile.workAddress'}}
            {{> afQuickField name='profile.phoneNumber'}}
            {{> afQuickField name='profile.mobileNumber'}}
            {{> afQuickField name='profile.birthday'}}
            {{> afQuickField name='profile.gender'}}
            {{> afQuickField name='profile.description'}}
            {{> afQuickField name='roles' type="select" options=rolesTypeOptions}}
        </fieldset>
        <button type="submit" class="btn btn-primary">register</button>
    {{/autoForm}}
</template>

Как исправить мою форму, чтобы создать пользователя с некоторым полем профиля в одной форме?

Спасибо за внимание.

1 ответ

При использовании автоформы schema Для этого необходимо убедиться, что схема, на которую вы ссылаетесь, определена в области видимости. Причина, по которой ваша схема не отображается, возможно, вы не зарегистрировали помощника для вашего User схемы. Попробуйте вставить следующую строку под определение схемы, которое вы вставили:

if (Meteor.isClient) {
    Template.registerHelper('User', User)
}

Кроме того, хорошим рефлексом является включение режима отладки Autoform & SimpleSchema при разработке приложения и форм:

if (Meteor.isClient)
    AutoForm.debug()
SimpleSchema.debug = true

в любом файле development.js вам может потребоваться определить среду разработки в вашем приложении.

Другие вопросы по тегам