ProductEntity um ein weiteres Feld erweitern mit Verweis auf Stanard Entity

Hallo.

Gibt es eine Möglichkeit die ProduktEntity “einfach” zu erweitern? Ich benötige ledigliche 1 Feld mit einer ID zur Tabelle sales_channel. Diese will ich dann über die erweiterte Maske innerhalb der Produkt-Detailsansicht (Admin) auswählen. Eine Mapping-Tabelle (ManyToMany, ManyToOne) werden nicht wirklich gebraucht. Leider ist die Doku wirklich spärlich… :frowning:

Es reicht anscheinend nicht das Feld in der Migration anzulegen um damit arbeiten zu können.

// MIGRATION
public function update(Connection $connection): void
{
	$this->updateInheritance($connection, 'product', 'baseChannel');
}

// EXTENSION
class Product extends EntityExtension
{
    /**
     * @param FieldCollection $collection
     */
    public function extendFields(FieldCollection $collection): void
    {
        $collection->add(
            (new IdField(
                'baseChannel',
                'baseChannel'
            ))->addFlags(new Inherited())
        );
    }

    /**
     * @return string
     */
    public function getDefinitionClass(): string
    {
        return ProductDefinition::class;
    }
}

Danke schon mal im Voraus.

 

Gruß 

Hi.

Anscheinend braucht es keine separate Entity Extension wenn ich direkt die Tabelle product mit updateInheritance() erweitere. Jetzt versuche ich noch den Werte, welche im Adminbereich beim Bearbeiten eines Produkts ausgewählt wird zu speichern. Leider ohne Erfolg :frowning: Vielleicht übersehe ich etwas aber keine Mehtode in meinem JS wird aufgerufen.

TWIG

{% block sw_product_category_form_visibility_field %}
    
        
            
            
        
    
    {% parent() %}
{% endblock %}

JS

import template from './sw-product-category-form.html.twig';

const { Component } = Shopware;
const { Criteria } = Shopware.Data;
const { mapPropertyErrors, mapState, mapGetters } = Shopware.Component.getComponentHelper();

Component.override('sw-product-category-form', {
    template,

    inject: [
        'repositoryFactory'
    ],

    data() {
        return {
            baseChannel: null
        };
    },

    computed: {
        productRepository() {
            return this.repositoryFactory.create('product');
        },

        salesChannelRepository() {
            return this.repositoryFactory.create('sales_channel');
        }
    },

    methods: {

        updateCurrentValue(value) {
            this.currentValue = value;
            console.log(this.currentValue);
        },

        onClickSave() {
            console.log('click');
            console.log(this.product);
        },

        onSave() {
            console.log(this.product);

        },

        saveProduct() {
            console.log(this.product);
            if (this.product) {
                this.productRepository.save(this.product, Shopware.Context.api);
            }
        }
    },
});

Sollte nicht zumindest die überschriebene updateCurrentValue() und die onClickSave() Methode aufgerufen werden?

 

Gruß