1
votes

I wrote an extension to add data to the ProductEntity in Shopware 6 and used the following tutorial: https://developer.shopware.com/docs/guides/plugins/plugins/framework/data-handling/add-complex-data-to-existing-entities

I also used another tutorial (https://developer.shopware.com/docs/guides/plugins/plugins/administration/add-new-tab) to add a new tab to the product detail view. Everything works so far.

In the product detail view I added a text field in my custom tab. But my problem is: how to get my data into the view? I want to add my new association to the product when the detail view is loaded. Therefore I tried to override the component from Shopware as follows:

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

    mounted() {
        const criteria = this.productCriteria;
        criteria.addAssociation('myNewAssociation');
        this.productCriteria =criteria;
    },
});

This does not work because productCriteria has no setter (original component can be found here: https://github.com/shopware/platform/blob/6.4.1.0/src/Administration/Resources/app/administration/src/module/sw-product/page/sw-product-detail/index.js)

Does anyone know how I can add a custom association to an existing one in vue.js in Shopware 6? What's the correct way to inject a custom association to the product detail view so I can use data from that in my new custom tab? The documentation always stops when it becomes interesting...

1

1 Answers

1
votes

I would suggest to overwrite the productCriteria method and call the parent to not need to fully copying the existing code, like this:


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

    computed: {
        productCriteria() {
            const criteria = this.$super('productCriteria');
            criteria.addAssociation('myNewAssociation');
            return criteria;
       },
    },
});

Let me know if it works.

I believe also you don't need to mention the template in the override (when I did this last time, the template was displayed twice)

EDIT: All good with the template.