# Backend ExtJS Store mit eigenem Model

**URL:** <https://forum.shopware.com/t/backend-extjs-store-mit-eigenem-model/43428>\
**Category:** Programmierung\
**Created:** [5. Februar 2017 um 20:20 UTC](https://forum.shopware.com/t/backend-extjs-store-mit-eigenem-model/43428 "2017-02-05T20:20:30Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![binaryhazard](https://avatars.discourse-cdn.com/v4/letter/b/eb8c5e/32.png) [@binaryhazard](https://forum.shopware.com/u/binaryhazard)\
**Post date:** [5. Februar 2017 um 20:20 UTC](https://forum.shopware.com/t/backend-extjs-store-mit-eigenem-model/43428/1 "2017-02-05T20:20:30Z")

</div>

Hallo zusammen,

ich versuche im Backend ein eigenes Model in der Detailansicht zu laden.  
Das Formular wird angezeigt, nur das Laden der Daten will nicht funktionieren.

![](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/2X/6/61762a454a3737431f77d32b9417fb8e3a93cfcd.png)&nbsp;Ich habe ein Model:

```
Ext.define('Shopware.apps.MegaPayment.model.CreditCardData', {
    extend: 'Shopware.data.Model',

    configure: function() {
        return {
            controller: 'CreditCardDataController',
            detail: 'Shopware.apps.MegaPayment.view.detail.CreditCardData'
        };
    },

    fields: [
        { name : 'id', type: 'int'},
        { name : 'accountHolder', type: 'string'},
        { name : 'cardProvider', type: 'string'},
        { name : 'cardNumber', type: 'string'},
        { name : 'cvc', type: 'string'},
        { name : 'expireDateMonth', type: 'string'},
        { name : 'expireDateYear', type: 'string'},
        { name : 'order_id', type: 'int'}
    ]

});

```

und den dazugehörigen Store:

```
Ext.define('Shopware.apps.MegaPayment.store.CreditCardData', {
    extend:'Shopware.store.Listing',
    configure: function() {
        return { controller: 'CreditCardDataController' };
    },
    model: 'Shopware.apps.MegaPayment.model.CreditCardData'
});

```

Wie ich jetzt die records aus dem store bekomme ist mir nicht ganz klar

```
/**
 * Created by ollie on 03.02.17.
 */
//{block name="backend/order/view/detail/window"}
// {$smarty.block.parent}
Ext.define('Shopware.apps.MegaPayment.view.detail.Window', {
    override: 'Shopware.apps.Order.view.detail.Window',
    createTabPanel: function () {

        var me = this;

        var tabPanel = me.callParent(arguments);
        var orderId = me.record.get('id');

        var store = Ext.create('Shopware.apps.MegaPayment.store.CreditCardData');
        var creditCardData = store.findRecord('order_id', orderId);
        if(!creditCardData){
            creditCardData = Ext.create('Shopware.apps.MegaPayment.model.CreditCardData');
        }

        var detailView =Ext.create('Shopware.apps.MegaPayment.view.detail.CreditCardData', {
            record: creditCardData
        });
        tabPanel.add(detailView);

        return tabPanel;
    }

});
//{/block}

```

findRecors liefert mit immer null. Scheinbar funktioniert das Mapping zwischen store und BackendController nicht.  
Dokumentation von Secha/Shopware und die Forernsuche haben mich an dieser stelle nicht weiter gebracht.  
Gibt es Beispiele wie man mit Stores richtig arbeitet, was mach ich falsch?

hier noch der Controller:

```
class Shopware_Controllers_Backend_CreditCardDataController extends Shopware_Controllers_Backend_Application
{
    protected $model = 'Shopware\CustomModels\MegaPayment\CreditCardData';
    protected $alias = 'CreditCardData';
    
}

```

Vielen&nbsp;Dank  
Oliver

&nbsp;

\*Edited some typos

---

<div class="post-metadata">

**Author:** ![pmahlow](https://avatars.discourse-cdn.com/v4/letter/p/90db22/32.png) [@pmahlow](https://forum.shopware.com/u/pmahlow)\
**Post date:** [7. Februar 2017 um 08:46 UTC](https://forum.shopware.com/t/backend-extjs-store-mit-eigenem-model/43428/2 "2017-02-07T08:46:23Z")

</div>

Hi Oliver,

ich würde das Laden des Datensatzes anders aufziehen:

- Im Controller die Möglichkeit geben, nach einer OrderID zu filtern
- Die OrderID über die ExtraParams des Stores mit übergeben

Das hätte den Vorteil, dass du prinzipiell nicht immer alle Daten laden müsstest um dann JS-seitig nach dem richtigen Eintrag zu suchen, sondern von vorne herein nur den Eintrag vom Backend bekommen würdest, den du haben möchtest.

findRecord hab ich noch nie benutzt - aber ich vermute hier ist das Problem, dass der Store kein autoload: true hat und dort, wo der Store erstellt wird, auch nicht explizit “load” auf dem Store aufgerufen wird.

Vielleicht hilft euch das schon.

&nbsp;

Viele Grüße

Philipp
