# Artikel mit weiteren RTE-Feldern erweitern

**URL:** <https://forum.shopware.com/t/artikel-mit-weiteren-rte-feldern-erweitern/56443>\
**Category:** Programmierung\
**Created:** [14. November 2018 um 13:11 UTC](https://forum.shopware.com/t/artikel-mit-weiteren-rte-feldern-erweitern/56443 "2018-11-14T13:11:37Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![alexloetsher](https://avatars.discourse-cdn.com/v4/letter/a/35a633/32.png) [@alexloetsher](https://forum.shopware.com/u/alexloetsher)\
**Post date:** [14. November 2018 um 13:11 UTC](https://forum.shopware.com/t/artikel-mit-weiteren-rte-feldern-erweitern/56443/1 "2018-11-14T13:11:37Z")

</div>

Hallo Leute

Bin erst seit kurzem mit Shopware und ExtJS unterwegs.  
Ich habe mit Hilfe dieser Anleitung [Attribute system](https://developers.shopware.com/developers-guide/attribute-system/#move-attribute-fields-into-another-form) zwei weitere RTE-Felder nach dem normalen „Beschreibung“ RTE-Feld hinzugefügt.&nbsp;

Die zwei RTE-Felder werden im Backend wie gewünscht angezeigt. Wenn ich etwas reinschreibe und Speichere wird es auch in die Datenbank geschrieben (in HTML-Format).  
Aber: Der Inhalt welcher in der Datenbank steht wird nicht&nbsp;angezeigt. D.h. die zwei Felder sind immer leer, sobald ich die Artikel-Detailseite&nbsp;neu öffne.

In der install-function vom plugin habe ich:

```
// create description_short
$service->update('s_articles_attributes', 'description_short', 'text', [
    'label' => 'Kurzbeschrieb',
    'translatable' => false,
    'displayInBackend' => false,
    'position' => 0,
    'custom' => false,
]);

// create description_technical
$service->update('s_articles_attributes', 'description_technical', 'text', [
    'label' => 'Technische Daten',
    'translatable' => false,
    'displayInBackend' => false,
    'position' => 0,
    'custom' => false,
]);

```

Die RTE-Felder erstelle ich im window.js (würde wahrscheinlich noch bisschen schöne gehen):

```
//{block name="backend/article/view/detail/window"}
// {$smarty.block.parent}
Ext.define('Shopware.apps.MyPlugin.view.detail.Window', {
	override: 'Shopware.apps.Article.view.detail.Window',

	createDescriptionFieldSet: function() {
		var me = this;

		return Ext.create('Ext.form.FieldSet', {
			layout: 'anchor',
			cls: Ext.baseCSSPrefix + 'article-description-field-set',
			defaults: {
				labelWidth: 155,
				anchor: '100%',
				translatable: true,
				xtype: 'textarea'
			},
			title: 'Texte',
			items: [
				{
					xtype: 'tinymce',
					fieldLabel: 'Kurzbeschrieb',
					name: 'descriptionShort',
					margin: '0 0 15',
					cls: Ext.baseCSSPrefix + 'article-description-short',
					height: 100
				},
				{
					xtype: 'tinymce',
					fieldLabel: 'Beschreibung',
					name: 'descriptionLong',
					margin: '0 0 15',
					cls: Ext.baseCSSPrefix + 'article-description-long',
					height: 100
				},
				{
					xtype: 'tinymce',
					fieldLabel: 'Technische Daten',
					name: 'descriptionTechnical',
					margin: '0 0 15',
					cls: Ext.baseCSSPrefix + 'article-description-technical',
					height: 100
				}
			]
		});
	},
});
//{/block}

```

Gespeichert wird’s dann im detail-controller:

```
//{block name="backend/article/controller/detail"}
// {$smarty.block.parent}
Ext.define('Shopware.apps.MyPlugin.controller.Detail', {
	override: 'Shopware.apps.Article.controller.Detail',

	onSaveArticle: function(win, article, options) {
		var me = this,
			originalCallback = options.callback;

		var customCallback = function(newArticle, success) {
			Ext.callback(originalCallback, this, arguments);

			Ext.Ajax.request({
				method: 'POST',
				url: '{url controller=AttributeData action=saveData}',
				params: {
					_foreignKey: newArticle.get('mainDetailId'),
					_table: 's_articles_attributes',
					__attribute_description_short: Ext.ComponentQuery.query('textarea[name="descriptionShort"]')[0].getValue(),
					__attribute_description_technical: Ext.ComponentQuery.query('textarea[name="descriptionTechnical"]')[0].getValue(),
				}
			});
		};

		if (!options.callback || options.callback.toString() !== customCallback.toString()) {
			options.callback = customCallback;
		}

		me.callParent([win, article, options]);
	}
});
//{/block}

```

Hat jemand von euch einen Tipp für mich? Das Speichern ist kein Problem nur das Auslesen.

---

<div class="post-metadata">

**Author:** ![alexloetsher](https://avatars.discourse-cdn.com/v4/letter/a/35a633/32.png) [@alexloetsher](https://forum.shopware.com/u/alexloetsher)\
**Post date:** [15. November 2018 um 14:12 UTC](https://forum.shopware.com/t/artikel-mit-weiteren-rte-feldern-erweitern/56443/2 "2018-11-15T14:12:22Z")

</div>

Habe das Problem selber gefunden 🙂

Im&nbsp;Shopware.apps.Article.view.detail.Window muss man die&nbsp;onStoresLoaded Funktion wie folgt erweitern:

```
onStoresLoaded: function() {
	var me = this;

	me.callParent(arguments);

	Ext.Ajax.request({
		url: '{url controller=AttributeData action=loadData}',
		params: {
			_foreignKey: me.article.get('mainDetailId'),
			_table: 's_articles_attributes'
		},
		success: function(responseData, request) {
			var response = Ext.JSON.decode(responseData.responseText);

			me.descriptionShort.setValue(response.data['__attribute_description_short']);
			me.descriptionTechnical.setValue(response.data['__attribute_description_technical']);
		}
	});
},

```

Ohne das setzt er die Werte des Formulars ja nicht. Bei den normalen Input-Feldern muss man dies auch machen.

Freundliche Grüsse aus der Schweiz  
Alex
