Я расширил таблицу Shopware 6 product
в соответствии с документацией Shopware Добавление сложных данных к существующим объектам.
Я добавил поле ввода для принятия пользовательских данных, как мне сохранить их в базу данных при сохранении продукта. Я хочу, чтобы данные были доступны в полезной нагрузке события product.written
.
Поскольку EntityExtension
позволяет добавлять только ассоциации или поля только во время выполнения (оцениваются во время выполнения и не могут быть сохранены), я предполагаю, что вы зарегистрировали свой собственный объект и связали его с product
.
Затем вы можете использовать свойство extension
сущности product
для хранения значений для ассоциаций с расширенной сущностью.
Я предполагаю, что вы переопределили sw-product-settings-form
, чтобы поместить поле в администрацию:
Component.override('sw-product-settings-form', {
template,
inject: ['repositoryFactory'],
computed: {
sellerName: {
get() {
return this.product.extensions.yourEntity?.sellerName ?? null;
},
set(value) {
if (!this.customer.extensions.yourEntity) {
this.$set(this.product.extensions, 'yourEntity', this.repositoryFactory.create('your_entity').create());
}
this.$set(this.product.extensions.yourEntity, 'sellerName', value);
},
},
}
});
В вашем шаблоне переопределения:
<sw-text-field
v-model = "sellerName"
/>
После этого изменения в поле будут сохранены при сохранении продукта. Вот пример плагина, который расширяет модуль клиента с помощью поля расширения таким же образом.