Данные пользовательского расширения продукта не сохраняются в администрировании

Я разрабатываю плагин для Shopware 6, который расширяет вкладку «Спецификации продукта» дополнительными полями. Данные загружаются правильно, если данные вручную вставляются в таблицы базы данных (entity_extension иentity_extension_translation). Однако, когда существующих данных нет, интерфейс администрирования не позволяет мне вводить и сохранять новые данные. Данные инициализируются правильно, но они не сохраняются в базе данных, когда я нажимаю кнопку сохранения по умолчанию в редакторе продуктов в администрировании sw6.

Шаги, которые я предпринял:

  • Расширение вкладки с подробными техническими характеристиками продукта.
  • Инициализация нового объекта, если существующие данные не найдены.
  • Установка инициализированных данных в свойстве product.extensions.catalogueBoxData.

Вот мой Component.override:

const {Component} = Shopware;
const {Criteria} = Shopware.Data;
const Context = Shopware.Context;

import template from "./sw-product-extension-detail-specifications.html.twig";

Component.override('sw-product-detail-specifications', {
    template,

    inject: ['repositoryFactory'],

    data() {
        return {
            productId: null,
            startingAidData: null
        };
    },

    created() {
        this.productId = this.$route.params.id;
        this.loadExtension();
    },

    computed: {
        wucPluginStartingAidExtensionCriteria() {
            const criteria = new Criteria();
            criteria.addFilter(Criteria.equals('productId', this.productId));
            return criteria;
        },

        wucPluginStartingAidExtensionRepository() {
            return this.repositoryFactory.create('wuc_plugin_starting_aid_extension');
        }
    },

    methods: {
        loadExtension() {
            this.wucPluginStartingAidExtensionRepository
                .search(this.wucPluginStartingAidExtensionCriteria, Context.api)
                .then(startingAidData => {
                    if (startingAidData.last()) {
                        console.info('Data found', startingAidData.last());
                        this.product.extensions.startingAidData = startingAidData.last();
                    } else {
                        console.info('Create and Set New Entity');
                        this.startingAidData = this.wucPluginStartingAidExtensionRepository.create(Shopware.Context.api);
                        this.startingAidData.productId = this.productId;
                        this.startingAidData.headline = 'Test!'
                        this.product.extensions.startingAidData = this.startingAidData;
                    }
                })
                .catch(error => {
                    console.error('Error loading extension:', error);
                });
        }
    }
});

Это соответствующий шаблон:

{% block sw_product_detail_specifications_measures_packaging %}
        <sw-card  v-if = "product.extensions.startingAidData" title = "Starting Aid Test"
                  position-identifier = "sw-product-detail-specifications-starting-aid"
        >
            <sw-text-field
                v-model:value = "product.extensions.startingAidData.headline"
                class = "sw-product-starting-aid__headline-field"
                label = "Starting Aid Test"
                placeholder = "Enter headline"
            ></sw-text-field>
        </sw-card>
    {% parent %}
{% endblock %}

Как я могу гарантировать, что расширение startAid корректно сохраняется в базе данных, когда я сохраняю продукт в администрировании? Что может отсутствовать или быть неправильно реализовано в моем нынешнем подходе?

Заранее спасибо, Никлас

Описание проблемы:

  • Новый объект инициализируется во внешнем интерфейсе, когда существующие данные не найдены.
  • Новая сущность появится в файле product.extensions.catalogueBoxData.
  • При сохранении продукта новая сущность не сохраняется в базе данных.
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
69
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Решение:

Основной причиной проблемы было неправильное назначение данных расширения. Чтобы решить эту проблему, необходимо было использовать точное имя объекта пользовательского расширения продукта при обновлении данных о продукте.

Вместо

this.product.extensions.startingAidData = this.startingAidData; 

Правильный подход был:

this.product.extensions.wucPluginStartingAidExtension = this.startingAidData;

Ссылаясь на расширение, используя определенное имя объекта (wucPluginStartingAidExtension), система может точно связать и сохранить пользовательские данные в структуре расширения продукта.

Другие вопросы по теме