Использовать автоформу для создания формы регистрации пользователя
Я использовал схему ниже с автоформой, но моя форма не отображается и возвращает ошибку. Как исправить мою форму на основе схемы, чтобы создать пользователя и профиль с одной формой в 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 вам может потребоваться определить среду разработки в вашем приложении.