Hallo an die Community,
erstmal danke für die vielen hilfreichen Beiträge hier. Ich konnte bereits einige sehr knifflige Probleme mit eurer Hilfe lösen.
Jetzt stehe ich allerdings vor einem Problem, dass nicht ganz so leicht zu lösen ist.
Ich habe für einen Kunden ein Plugin geschrieben, dass es ihm ermöglicht einige sehr personalisierte Daten in den Artikeldetails anzugeben. Einige davon sind für das Frontend bestimmt und andere wiederum nur für Exporte gedacht.
Das funktioniert auch alles wirklich gut und wir sind mit dem Ergebnis bisher sehr zufrieden, jedoch lassens ich die Artikel mit den „Custom Attributen“ nicht exportieren.
Diese Attribute habe ich mit dem CRUD service angelegt, wie in den Docs beschrieben:
private function addAttributes()
{
$service = Shopware()->Container()->get('shopware_attribute.crud_service');
$customColumns = [
'ausfuehrung' => [
'table' => 's_articles_attributes',
'name' => 'ks_ausf',
'type' => 'textfield',
'params' => [
'label' => 'Ausführung',
'supportText' => 'Die Ausführung des Produktes',
'helpText' => 'Die Ausführung des Produktes',
'translatable' => true,
'displayInBackend' => true,
'entity' => '',
'position' => 500,
'custom' => false
]
],
'funktion' => [
'table' => 's_articles_attributes',
'name' => 'ks_funk',
'type' => 'textfield',
'params' => [
'label' => 'Funktion',
'supportText' => 'Die Funktion des Produktes',
'helpText' => 'Die Funktion des Produktes',
'translatable' => true,
'displayInBackend' => true,
'entity' => '',
'position' => 501,
'custom' => false
]
],
'lieferumfang' => [
'table' => 's_articles_attributes',
'name' => 'ks_lieferumfang',
'type' => 'textfield',
'params' => [
'label' => 'Lieferumfang',
'supportText' => 'Der enthaltene Lieferumfang des Produktes',
'helpText' => 'Der enthaltene Lieferumfang des Produktes',
'translatable' => true,
'displayInBackend' => true,
'entity' => '',
'position' => 502,
'custom' => false
]
],
'dnHauptwarengruppe' => [
'table' => 's_articles_attributes',
'name' => 'ks_dn_hauptwarengruppe',
'type' => 'textfield',
'params' => [
'label' => 'Hauptwarengruppe',
'supportText' => 'Die Hauptwarengruppe',
'helpText' => 'Hauptwarengruppe',
'translatable' => true,
'displayInBackend' => true,
'entity' => '',
'position' => 600,
'custom' => false
]
],
'dnWarengruppe' => [
'table' => 's_articles_attributes',
'name' => 'ks_dn_warengruppe',
'type' => 'textfield',
'params' => [
'label' => 'Warengruppe',
'supportText' => 'Die Warengruppe',
'helpText' => 'Warengruppe',
'translatable' => true,
'displayInBackend' => true,
'entity' => '',
'position' => 601,
'custom' => false
]
],
'dnKurztext1' => [
'table' => 's_articles_attributes',
'name' => 'ks_dn_kurztext_1',
'type' => 'textfield',
'params' => [
'label' => 'Kurztext 1',
'supportText' => 'Kurztext 1',
'helpText' => 'Kurztext 1',
'translatable' => true,
'displayInBackend' => true,
'entity' => '',
'position' => 602,
'custom' => false
]
],
'dnKurztext2' => [
'table' => 's_articles_attributes',
'name' => 'ks_dn_kurztext_2',
'type' => 'textfield',
'params' => [
'label' => 'Kurztext 2',
'supportText' => 'Kurztext 2',
'helpText' => 'Kurztext 2',
'translatable' => true,
'displayInBackend' => true,
'entity' => '',
'position' => 603,
'custom' => false
]
],
'dnMengeneinheit' => [
'table' => 's_articles_attributes',
'name' => 'ks_dn_mengeneinheit',
'type' => 'textfield',
'params' => [
'label' => 'Mengeneinheit',
'supportText' => 'Mengeneinheit',
'helpText' => 'Mengeneinheit',
'translatable' => true,
'displayInBackend' => true,
'entity' => '',
'position' => 604,
'custom' => false
]
],
'dnAusschreibungstext' => [
'table' => 's_articles_attributes',
'name' => 'ks_dn_ausschreibungstext',
'type' => 'textfield',
'params' => [
'label' => 'Ausschreibungstext',
'supportText' => 'Ausschreibungstext',
'helpText' => 'Ausschreibungstext',
'translatable' => true,
'displayInBackend' => true,
'entity' => '',
'position' => 605,
'custom' => false
]
]
];
foreach ($customColumns as $col) {
$service->update($col['table'], $col['name'], $col['type'], $col['params']);
}
// Rebuild attribute models
$metaDataCache = Shopware()->Models()->getConfiguration()->getMetadataCacheImpl();
$metaDataCache->deleteAll();
Shopware()->Models()->generateAttributeModels(
array('s_articles_attributes')
);
}
Ich habe auch schon die entsprechenden Methoden ausprobiert, die hier in den Foren oder sonstwo im Netz zu finden sind, aber leider bekomme ich immer wieder den Fehler, dass im Doctrine Model das entsprechende Feld „attributeKsDnKurztext1“ nicht assoziiert ist:
[Semantical Error] line 0, col 2647 near ‚ksDnKurztext1‘: Error: Class Shopware\Models\Attribute\Article has no field or association named ksDnKurztext1
Vielleicht gibt es hier ja jemanden, der das Problem auch schon einmal hatte und mir weiterhelfen kann. Interessanterweise meckert der Export nicht bei den anderen Feldern, die davor kommen müssten (Hauptwarengruppe, Warengruppe) sondern erst bei dem Kurztext.
Methoden, die ich schon ausprobiert habe:
- Doctrine Model neu generieren lassen (via Freitextfeldverwaltung)
- Cache clear im Backend
- Cache clear via Terminal (php bin/console sw:cache:clear)
- Cache move via Terminal
Meine Shopware Installation läuft auf Version 5.3.2 und alle verwendeten Plugins sind auf dem neuesten Stand.
Mittlerweile komme ich nicht mehr weiter und kann leider auch keinen Fehler ausmachen, der das auslösen könnte. Wie gesagt funktioniert sonst alles, was ich eingebaut habe einwandfrei, die Datenbank spiegelt auch den Stand der Daten exakt wieder und die Ausgabe ist ebenso problemlos (auch via API).
Über einen Hinweis was ich noch versuchen kann wäre ich sehr dankbar.