我创建了这样一个模型:
var keystone = require('keystone'),
Types = keystone.Field.Types;
var Page = new keystone.List('Page', {
autokey: { path: 'slug', from: 'menuTitle', unique: true },
map: { name: 'menuTitle' },
});
Page.add({
keyword: { type: Types.Key, required: true, initial: false },
slug: { type: Types.Key, required: true, initial: false },
type: { type: Types.Select, options: 'textpage, projects, services, contacts, homepage', default: 'textpage' },
menuTitle: { type: String, required: true, initial: false },
pageTitle: { type: String },
pageContent: { type: Types.Html, wysiwyg: true, height: 400 },
seoTitle: { type: String },
seoKeywords: { type: String },
seoDescription: { type: String },
isActive: { type: Types.Boolean }
});
Page.defaultColumns = 'keyword, slug, menuTitle, isActive';
Page.register();
我预计它会生成一个对象列表和一个表单来创建这些对象。 但表格没有字段。
我做错了什么?或者我还应该做些什么来获得包含我所有领域的表格?
答案 0 :(得分:11)
基本上,您没有看到任何字段,因为您已将initial
选项设置为false
。
initial
默认为false
,除了"名称"字段 - 即默认情况下,路径为name
的字段或与您name
的Keystone匹配的映射路径menuTitle
。
通常,您的menuTitle
字段会显示出来,希望您明确告诉它不要使用initial: false
设置。
要显示字段,只需将您想要的字段设置为initial: true
,如下所示:
var keystone = require('keystone'),
Types = keystone.Field.Types;
var Page = new keystone.List('Page', {
autokey: { path: 'slug', from: 'menuTitle', unique: true },
map: { name: 'menuTitle' },
});
Page.add({
keyword: { type: Types.Key, required: true, initial: true },
type: { type: Types.Select, options: 'textpage, projects, services, contacts, homepage', default: 'textpage' },
menuTtle: { type: String, required: true, initial: true },
pageTitle: { type: String, initial: true },
pageContent: { type: Types.Html, wysiwyg: true, height: 400 },
seoTitle: { type: String },
seoKeywords: { type: String },
seoDescription: { type: String },
isActive: { type: Types.Boolean }
});
Page.defaultColumns = 'keyword, slug, menuTitle, isActive';
Page.register();
另外值得注意的是,您不需要实际添加slug
字段;由于您的autokey
设置,它会自动添加到架构中。