【问题标题】:Keystone.js Admin UI - no fields in a formKeystone.js 管理 UI - 表单中没有字段
【发布时间】:2014-12-07 06:09:22
【问题描述】:

我已经创建了这样一个模型:

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();

我希望它会生成一个对象列表和一个创建这些对象的表单。 但是表单没有字段。

我做错了什么?或者我还应该怎么做才能获得包含所有字段的表单?

【问题讨论】:

  • menuTitle 字段的名称拼写错误,您在列表的autokey 选项中引用。

标签: node.js keystonejs


【解决方案1】:

基本上,您看不到任何字段,因为您将所有字段上的initial 选项设置为false

initial 默认为 false,除了“名称”字段 - 即默认情况下,路径为 name 的字段或与您为 name 指定的映射匹配的路径,在您的案例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 设置,它会自动添加到您的架构中。

【讨论】:

    猜你喜欢
    • 2015-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-13
    • 1970-01-01
    • 2022-11-13
    • 1970-01-01
    相关资源
    最近更新 更多