codiversecodiverse MemberComments: 120 Received thanks: 8 Member since: February 2013

Hallo zusammen,

ich sitze nun schon eine ganze Weile an diesem Problem.

1) Ich habe über ein Plugin (neue 5.2 Plugin Struktur) einen eigenen Inhaltstypen über die contenttypes.xml (nach Vorgabe hier: https://developers.shopware.com/developers-guide/content-types/) angelegt.

2) Zu diesem Inhaltstypen gibt es ein eigenes EKW Element (Auszug aus meiner Basisklasse):

private function installEmotionComponent()
    {
        /** @var ComponentInstaller emotionComponentInstaller */
        $emotionComponentInstaller = $this->container->get('shopware.emotion_component_installer');

        $contactpersonElement = $emotionComponentInstaller->createOrUpdate(
            $this->getName(),
            'DtgsContactPersonElement',
            [
                'name' => 'codiverse Ansprechpartner',
                'xtype' => 'emotion-components-contactperson',
                'template' => 'emotion_contactperson',
                'cls' => 'emotion-contactperson-element',
                'description' => 'codiverse Ansprechperpartner Einkaufswelten Element'
            ]
        );

        $contactpersonElement->createComboBoxField([
            'name' => 'contactperson_element_cp_id',
            'fieldLabel' => 'Contact Person',
            'supportText' => 'Choose a contact person',
            'allowBlank' => false,
            'store' => 'Shopware.apps.DtgsContactPersons.store.ContactPerson',
            'queryMode' => 'local',
            'displayField' => 'lastname',
            'valueField' => 'id'
        ]);

    }

3) Im EKW Element habe ein Select Feld, welches dynamisch mit den Einträgen befüllt wird, die der User im Inhaltstyp angelegt hat. Dafür gebe als Store meinen eigenen Store an (siehe oben) und definiere diesen im Code wie folgt:

custom/plugins/DtgsContactPersons/Resources/views/backend/contactpersons/store/contactpersons.js

//
Ext.define('Shopware.apps.DtgsContactPersons.store.ContactPerson', {
    extend: 'Ext.data.Store',
    autoLoad: true,
    storeId: 'Shopware.apps.DtgsContactPersons.store.ContactPerson',
    model: 'Shopware.apps.DtgsContactPersons.model.ContactPerson',
    proxy: {
        type: 'ajax',
        url: '{url action="list" controller="CustomDtgsContactPerson"}',
        reader: {
            type: 'json',
            root: 'data'
        }
    },
    listeners: {
        load: function( store, records, successful, eOpts ) {
            store.insert(0, {
                id: 0,
                lastname: 'kein Ansprechpartner'
            })
        }
    }
}).create();

Dies funktioniert auch soweit erstmal. Allerdings habe ich das Problem, dass nach einer gewissen Zeit - und leider kann ich nicht reproduzieren, durch was es ausgelöst wird - plötzlich folgender Fehler auftritt:

 Controller "DtgsContactPersons" not found for request url https://domain-redacted.de/backend/DtgsContactPersons/store/ContactPerson?file=app&no-cache=1579248507+1+1 in engine/Library/Enlight/Controller/Dispatcher/Default.php on line 428

Der Fehler tritt auf, wenn ich das EKW Element in der EKW versuche zu öffnen.

Wenn ich den Cache des Shops leere und das Backend neu lade, funktioniert es wieder.

Kennt jemand das Szenario oder hat eine Idee, ich welche Richtung ich weiter arbeiten könnte? Scheinbar wird ja eine falsche Cache Datei geschrieben. Kann man das Caching bestimmter Backend-Elemente verhindern?

Danke für jeden Hinweis,
Constantin

Comments

  • codiversecodiverse MemberComments: 120 Received thanks: 8 edited November 20 Member since: February 2013

    Ich hole diesen Post nochmal aus der Versenkung, weil das Problem noch nicht gelöst ist.

    Warum wird versucht, die URL

    /backend/DtgsContactPersons/store/ContactPerson?file=app&no-cache=1579248507+1+1

    aufzurufen? Eigentlich gebe ich doch im Store an, dass er auf

    /backend/CustomDtgsContactPerson/list

    zugreifen soll. Wenn er das tut, ist ja auch alles in Ordnung.

Sign In or Register to comment.