在详细信息窗口中创建选择字段

时间:2018-12-17 21:39:46

标签: extjs shopware

我正在创建一个自定义插件,需要在后端区域列出一些内容。列表中的每个项目都可以选择打开一个详细信息窗口,在该窗口中我想显示一些信息以及一个 SELECT OPTION 字段,但不确定如何创建。该字段只是选择所需的选项并将其保存在数据库中。

是否可以在myplugin / Resources / views / backend / my_plugin / model / product.js文件中创建它?

我有这样的东西(样本)

Ext.define('Shopware.apps.MyPlugin.model.Product', {
    extend: 'Shopware.data.Model',

    configure: function() {
        return {
            controller: 'MyPlugin',
            detail: 'Shopware.apps.MyPlugin.view.detail.Product'
        };
    },

    fields: [
        { name : 'id', type: 'int', useNull: true },
        { name : 'Name', type: 'string' },
        { name : 'Lastname', type: 'string' },
        { name : 'Date', type: 'date' },
        { name : 'Color', type: 'SELECT?' }
    ]
});

当然,“颜色”字段不能识别那里的SELECT,但我想知道是否还有其他词吗?

我希望像这样创建一个新字段:

fields: [
            ...
            { 
              name : 'Color', 
              type: 'SELECT?', 
              values: {'green', 'blue', 'red'} 
             }
        ]

如果我完全错了,请您指导我在哪里创建此字段?

谢谢。

1 个答案:

答案 0 :(得分:0)

您正在定义模型,而不是插件,并且您似乎想将“ Color”配置为枚举?我说的对吗?

标准类型为:

Ext.data.field.Field //(Default, implies no conversion)
Ext.data.field.String
Ext.data.field.Integer
Ext.data.field.Number
Ext.data.field.Boolean
Ext.data.field.Date

(请参阅Field Types下的文档)

除非您要进行模型验证,否则您可以只使用字符串。

您可以创建从字符串或字段扩展的自定义类型,并使用自定义验证器。 (请参见Validation下的同一页)

示例:

Ext.define('App.field.Color', {
     extend: 'Ext.data.field.Field',

     alias: 'data.field.color',

     // Match list of colors
     validators: {
         type: 'list',
         list: ['green', 'blue', 'red']
     }
});

Ext.define('App.model.Product', {
    extend: 'Ext.data.Model',

    fields: [
        { name : 'id', type: 'int', useNull: true },
        { name : 'Name', type: 'string' },
        { name : 'Lastname', type: 'string' },
        { name : 'Date', type: 'date' },
        { name : 'Color', type: 'color' }
    ]
});