Hi Shopware Community,
ich möchte die Kundendetailseite im Administrationsbereich erweitern und anhand der KundenID Daten aus meiner Entität ausgeben.
Die KundenID befindet sich ja im Objekt “customer”, welches ich im Twig-Template mittels {{ customer }} ausgeben kann.
Frage 1: Wie kann ich in meiner vue.js Datei auf die KundenID zugreifen?
Desweiteren würde ich gerne eine Datenbank-Abfrage bauen, die mir Feld “x” ausgibt, wenn Feld “customerId” = KundenID ist
In PHP geht es ja über ->addFilter(new EqualsFilter(…)). Ist das in vue.js so ähnlich?
Frage 2: Wie sieht diese Abfrage aus? Hat jemand ein Beispiel?
Antwort -> siehe *EDIT* weiter unten
Mein Code:
import { Locale } from 'src/core/shopware';
import template from './extension/sw-customer-detail-base.html.twig';
import deDE from './snippet/de-DE.json';
import enGB from './snippet/en-GB.json';
const { Component } = Shopware;
const { Criteria } = Shopware.Data;
Component.override('sw-customer-detail-base', {
template,
inject: [
'repositoryFactory'
],
data() {
return {
repository: null,
customFile: null
};
},
created() {
this.createdOwnComponent()
},
methods: {
createdOwnComponent() {
this.repository = this.repositoryFactory.create('my_entity');
// Wie baue ich hier eine Abfrage, nach dem Feld customerId = this.customerId ?
this.repository.search(new Criteria(), Shopware.Context.api).then((result) => {
this.customFile = result;
})
}
}
});
Locale.extend('de-DE', deDE);
Locale.extend('en-GB', enGB);
Liebe Grüße
Oliver
*EDIT*
Frage 2 hat sich erledigt.
createdOwnComponent() {
const criteria = new Criteria();
var customerId = null;
criteria.addFilter(Criteria.equals('customerId', customerId));
this.repository = this.repositoryFactory.create('my_entity');
this.repository.search(criteria, Shopware.Context.api).then((result) => {
this.customFile = result;
})
}