# shopware\_attribute.crud\_service mit ExtJs AJAX Store erweitern

**URL:** https://forum.shopware.com/t/shopware-attribute-crud-service-mit-extjs-ajax-store-erweitern/47434
**Category:** Programmierung
**Created:** [9. August 2017 um 12:39 UTC](https://forum.shopware.com/t/shopware-attribute-crud-service-mit-extjs-ajax-store-erweitern/47434 "2017-08-09T12:39:09Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![gearsdigital](https://avatars.discourse-cdn.com/v4/letter/g/ed655f/32.png) [@gearsdigital](https://forum.shopware.com/u/gearsdigital)
#### Post date: [9. August 2017 um 12:39 UTC](https://forum.shopware.com/t/shopware-attribute-crud-service-mit-extjs-ajax-store-erweitern/47434/1 "2017-08-09T12:39:09Z")

</div>

Ich nutze den **crud\_service&nbsp;** um das Shopseitenformular um ein eigenes Feld (ComboBox) zu erweitern. Das funktioniert auch. Was ich noch nicht herausgefunden habe ist wie ich diesem Feld einen (Ajax)-Store zuweisen kann. Ich möchte nämlich einen Autosuggest implementieren.

```
private function createAttributes()
{
    /** @var $service \Shopware\Bundle\AttributeBundle\Service\CrudService */
    $service = $this->container->get('shopware_attribute.crud_service');

    $service->update('s_cms_static_attributes', 'suggested_emotion_id', TypeMapping::TYPE_COMBOBOX, [
        'label' => 'Einkaufswelt auswählen',
        'translatable' => false,
        'displayInBackend' => true
    ]);

    $metaDataCache = Shopware()->Models()->getConfiguration()->getMetadataCacheImpl();
    $metaDataCache->deleteAll();

    // Rebuild attribute models
    Shopware()->Models()->generateAttributeModels(
        [
            's_cms_static_attributes'
        ]
    );
}

```

Für das&nbsp;Autosuggest habe ich bereits eine fertige Lösung&nbsp;die aber –vermutlich weil das Model in diesem Fall nicht erweitert wird– die Daten nicht persistiert. Ich habe hierzu die ExtJs Komponente&nbsp; **Shopware.apps.Site.view.site.Form** erweitert. **&nbsp;**

```
//{block name="backend/site/view/site/form" append}
Ext.define('Shopware.apps.Site.view.site.EmotionAutoSuggest.Form', {
    override: 'Shopware.apps.Site.view.site.Form',
    getItems: function() {
        var me = this;
        var items = me.callParent(arguments);

        items.unshift({
            xtype: 'fieldset',
            title: 'My Fieldset Title',
            items: me.getAutoSuggestField(),
            padding: 20,
            defaults: { labelWidth: 155 }
        });
        return items;
    },

    getAutoSuggestField: function() {
        var states = Ext.create('Ext.data.Store', {
            proxy: {
                type: 'ajax',
                api: {
                    read: '/backend/EmotionSuggestController/getEmotions'
                }
            },
            fields: ['id', 'name']
        });

        // Create the combo box, attached to the states data store
        return Ext.create('Ext.form.ComboBox', {
            labelWidth: 155,
            anchor: '100%',
            fieldLabel: 'Einkaufswelt auswählen',
            store: states,
            queryMode: 'remote',
            displayField: 'name',
            valueField: 'id',
            name: 'suggested_emotion_id',
            renderTo: Ext.getBody()
        });
    }
});
//{/block}

```

&nbsp;
