3

私はそのようなモデルを作成しました:

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

オブジェクトのリストと、これらのオブジェクトを作成するためのフォームが生成されることを期待していました。しかし、フォームにはフィールドがありません。ここに画像の説明を入力

私は何を間違っていますか?または、すべてのフィールドを含むフォームを取得するには、他に何をすればよいですか?

4

1 に答える 1

11

initial基本的に、オプションがすべてに設定されているため、フィールドは表示されませんfalse

initialfalse「名前」フィールドを除いて、デフォルトは です。つまり、デフォルトでは、パスを持つフィールド、またはnameKeystone に指定したマッピングに一致するパス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ます。

于 2014-10-13T04:57:06.497 に答える