shopping world element如何进入系统商城?

How to access system stores for shopping world element?

我正在尝试向自定义购物世界元素添加带有类别选择的下拉菜单,我已尝试根据 this 示例创建插件。我添加了一个新的组合框字段

$vimeoElement->createComboBoxField([
    'name' => 'cat',
    'fieldLabel' => 'Category',
    'supportText' => 'Select category',
    'allowBlank' => false,
    'store' => 'Shopware.apps.Base.store.Category'
]);

它已经以购物元素的形式出现了,但是我点击它的时候出现了JavaScript错误:

"Cannot read property 'type' of undefined"

在准备组合框模板时发生。我无法确定究竟是什么导致了这个错误,所以我尝试用 JavaScript 创建我自己的字段,但我也无法从 JavaScript 的商店获取类别列表。

Ext.create('Ext.form.field.ComboBox', {
    xtype:'combobox',
    fieldLabel: 'Select Category',
    store: Shopware.apps.Base.store.Category,
    name: 'category'
});

这失败了:

"Cannot read property 'getProxy' of undefined".

尝试使用 .getRange() 直接从商店获取项目或使用 .load() 加载项目无效 - 对象中没有此类方法。

我是不是访问了错误的商店?还有一个 Shopware.store.Category 但它似乎是对同一个对象的 link 并且不一样。

您可以将此示例用于类别选择

$ekElement->createComboBoxField([
  'name' => 'heroChangerCategory',
  'fieldLabel' => 'KategorieLink',
  'supportText' => 'Kategorie auf die verlinkt werden soll',
  'xtype' => 'emotion-components-fields-category-selection'
]);

或者按照您的方式,您必须定义 displayField 和 valueField 的值

$ekElement->createComboBoxField([
  'name' => 'cat',
  'fieldLabel' => 'Category',
  'supportText' => 'Select category',
  'displayField' => 'name',
  'valueField' => 'id',
  'allowBlank' => false,
  'store' => 'Shopware.apps.Base.store.Category'
]);