# ExtJs Record wird nur mit NULL als Wert gespeichert!

**URL:** <https://forum.shopware.com/t/extjs-record-wird-nur-mit-null-als-wert-gespeichert/15205>\
**Category:** Shopware 3.5\
**Tags:** programming\
**Created:** [25. August 2013 um 16:58 UTC](https://forum.shopware.com/t/extjs-record-wird-nur-mit-null-als-wert-gespeichert/15205 "2013-08-25T16:58:44Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![kUrTmAn](https://avatars.discourse-cdn.com/v4/letter/k/ed8c4c/32.png) [@kUrTmAn](https://forum.shopware.com/u/kUrTmAn)\
**Post date:** [25. August 2013 um 16:58 UTC](https://forum.shopware.com/t/extjs-record-wird-nur-mit-null-als-wert-gespeichert/15205/1 "2013-08-25T16:58:44Z")

</div>

Hallo Liebe Community, ich habe wiedermal ein Problem. Ich habe ein Model und einen Store erstellt, und erstelle diese beiden in meiner Funktion zum Speichern der Form Werte. Da lediglich getestet werden soll, ob die Werte überhaupt gespeichert werden reicht dies fürs erste denk ich. Nachdem ich auf den Speichern BUtton geklickt habe, erscheinen in dem Request Post die richtigen Werte wie sie von mir eingetragen wurden. In der Antwort sind diese Felder jedoch wieder leer, und genau so werden sie auch in der Datenbank gespeichert. Weiß jmd Rat oder Hilfe? Am besten jmd von Shopware, da ich denke, es handelt sich um ein sehr spezielles Problem. Anbei füge ich die Funktion zum speichern der Daten an. Hoffe ihr könnt damit was anfangen 🙂 ` onSave: function(record) { var me = this, message = ''; var storeObject=this.getStore('Shopware.apps.IwMyProject.store.General'); //var storeObject = Ext.create('Shopware.apps.IwMyProject.store.General'); var check = Ext.create('Shopware.apps.IwMyProject.model.General'); check.set('d', true); check.set('f',true); check.set('en',false); check.set('ea','info@ideenwribler.de'); check.set('bp','mm\_\_'); storeObject.add(check); var record = storeObject.getAt(0); console.info(record); if (!(record instanceof Ext.data.Model)) { return; } me.mainWindow.setLoading(true); record.save({ success: function() { me.mainWindow.setLoading(false); message = '{s name=messages/save\_success}Eintrag erfolgreich gespeichert{/s}'; message = Ext.String.format(message, record.get('email\_address')); Shopware.Notification.createGrowlMessage('', message); }, failure: function(result, operation) { me.mainWindow.setLoading(false); var rawData = result.getProxy().getReader().rawData; var message = '{s name=messages/save\_failure}{/s}Speichern fehlgeschlagen: ' + rawData.error; message = Ext.String.format(message, record.get('id')); console.info(message); Shopware.Notification.createGrowlMessage('', message); } }); }, `

---

<div class="post-metadata">

**Author:** ![pino](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/pino/32/14373_2.png) [@pino](https://forum.shopware.com/u/pino)\
**Post date:** [26. August 2013 um 08:36 UTC](https://forum.shopware.com/t/extjs-record-wird-nur-mit-null-als-wert-gespeichert/15205/2 "2013-08-26T08:36:34Z")

</div>

> [@](#):
>
> Nachdem ich auf den Speichern BUtton geklickt habe, erscheinen in dem Request Post die richtigen Werte wie sie von mir eingetragen wurden

---

<div class="post-metadata">

**Author:** ![Oliver\_Skroblin](https://avatars.discourse-cdn.com/v4/letter/o/6bbea6/32.png) [@Oliver\_Skroblin](https://forum.shopware.com/u/Oliver_Skroblin)\
**Post date:** [27. August 2013 um 09:26 UTC](https://forum.shopware.com/t/extjs-record-wird-nur-mit-null-als-wert-gespeichert/15205/3 "2013-08-27T09:26:50Z")

</div>

Hi, der Source Code sieht erstmal richtig aus. Interessant wären jetzt folgende Source Klasse: 1. PHP Controller. 2. ExtJS Model Die Zeile “record = store.getAt(0)” kannst du dir sparen. Durch store.add(check) wird der record als Referenz übergeben. Gruß Oliver

---

<div class="post-metadata">

**Author:** ![kUrTmAn](https://avatars.discourse-cdn.com/v4/letter/k/ed8c4c/32.png) [@kUrTmAn](https://forum.shopware.com/u/kUrTmAn)\
**Post date:** [28. August 2013 um 11:38 UTC](https://forum.shopware.com/t/extjs-record-wird-nur-mit-null-als-wert-gespeichert/15205/4 "2013-08-28T11:38:40Z")

</div>

Erstmal vielen Dank für die Antworten! Anbei einmal der PHP Controller: [code]\<?php class Shopware\_Controllers\_Backend\_IwBackupShopsystem extends Shopware\_Controllers\_Backend\_ExtJs  
{

protected $repository = null;

```
/**
 * @return \Shopware\CustomModels\IwBackupShopsystem\Repository
 */
public function getRepository() {
    if ($this->repository === null) { $this-\>repository = Shopware()-\>Models()-\>getRepository( 'Shopware\CustomModels\IwBackupShopsystem\Backup' ); } return $this-\>repository; } /\*\* \* Controller action which can be called over an ajax request. \* This function can be used to get the general configuration. \*/ public function getGeneralConfigAction() { $this-\>View()-\>assign( $this-\>getGeneralConfig( $this-\>Request()-\>getParam('filter'), $this-\>Request()-\>getParam('sort'), $this-\>Request()-\>getParam('offset'), $this-\>Request()-\>getParam('limit') ) ); } /\*\* \* Internal helper function which selects backup configuration \* @param $filter \* @param $sort \* @param $offset \* @param $limit \* \* @return array \*/ protected function getGeneralConfig($filter, $sort, $offset, $limit) { $builder = $this-\>getRepository()-\>getListQueryBuilder( $filter, $sort, $offset, $limit ); $query = $builder-\>getQuery(); $query-\>setHydrationMode( \Doctrine\ORM\AbstractQuery::HYDRATE\_ARRAY ); $paginator = new \Doctrine\ORM\Tools\Pagination\Paginator($query); return array( 'success' =\> true, 'total' =\> $paginator-\>count(), 'data' =\> $paginator-\>getIterator()-\>getArrayCopy() ); } /\*\* \* Controller action which can be called over an ajax request. \* This function can be used to create a new general config. \*/ public function createGeneralConfigAction() { $this-\>View()-\>assign( $this-\>saveGeneralBackup($this-\>Request()-\>getParams()) ); } /\*\* \* Internal helper function which can be used to save a new or existing general config. \* If the data parameter contains the id field, the function updates an existing general config, \* which identified over the id. \* @param $data \* \* @return array \*/ protected function saveGeneralBackup($data) { try { $favorite = new \Shopware\CustomModels\IwBackupShopsystemiBackuporite(); if (!empty($data['id'])) { $favorite = Shopware()-\>Models()-\>find( '\Shopware\CustomModels\IwBackupShopsystem\Backup', (int) $data['id'] ); } if (!($favorite instanceof \Shopware\CustomModels\IwBackupShopsystem\Backup)) { return array( 'success' =\> false, 'error' =\> "The passed id '" . $data['id'] . " don't exist" ); } #$data = $this-\>prepareAssociatedData($data); $backup-\>fromArray($data); Shopware()-\>Models()-\>persist($backup); Shopware()-\>Models()-\>flush(); $data = $this-\>getGeneralBackup( $backup-\>getId(), \Doctrine\ORM\AbstractQuery::HYDRATE\_ARRAY ); return array( 'success' =\> true, 'data' =\> $data ); } catch (Exception $e) { $error = $e-\>getMessage(); return array( 'success' =\> false, 'data' =\> $data, 'error' =\> $error ); } } /\*\* \* Helper function to get a single general configbacku object. \* \* @param $generalBackupId \* @param int $hydrationMode \* \* @return mixed \*/ protected function getGeneralBackup($generalBackupId, $hydrationMode = \Doctrine\ORM\AbstractQuery::HYDRATE\_OBJECT) { $builder = $this-\>getRepository()-\>getOneQueryBuilder($generalBackupId); return $builder-\>getQuery()-\>getOneOrNullResult($hydrationMode); } } [/code] und schließlich das ExtJS Model: [code]<?php namespace Shopware\CustomModels\IwBackupShopsystem;

```

use Shopware\Components\Model\ModelEntity,  
Doctrine\ORM\Mapping AS ORM,  
Symfony\Component\Validator\Constraints as Assert,  
Doctrine\Common\Collections\ArrayCollection;

/\*\*

- Shopware\CustomModels\IwBackupShopsystem\Backup

- 
- @ORM\Table(name=“iw\_backup\_shopsystem”)

- @ORM\Entity(repositoryClass=“Repository”)  
_/  
class Backup extends ModelEntity  
{  
/_\*

---

<div class="post-metadata">

**Author:** ![Oliver\_Skroblin](https://avatars.discourse-cdn.com/v4/letter/o/6bbea6/32.png) [@Oliver\_Skroblin](https://forum.shopware.com/u/Oliver_Skroblin)\
**Post date:** [28. August 2013 um 11:54 UTC](https://forum.shopware.com/t/extjs-record-wird-nur-mit-null-als-wert-gespeichert/15205/5 "2013-08-28T11:54:22Z")

</div>

Hi, hier ist der Fehler versteckt: ` $favorite = new \Shopware\CustomModels\IwBackupShopsystemiBackuporite(); if (!empty($data['id'])) { $favorite = Shopware()-\>Models()-\>find( '\Shopware\CustomModels\IwBackupShopsystem\Backup', (int) $data['id'] ); } if (!($favorite instanceof \Shopware\CustomModels\IwBackupShopsystem\Backup)) { return array( 'success' =\> false, 'error' =\> "The passed id '" . $data['id'] . " don't exist" ); } #$data = $this-\>prepareAssociatedData($data); $backup-\>fromArray($data); ` Du machst am Anfang einen “find” oder ein “new …” was auch richtig ist. Dies weist du jedoch der Variabel $favorite zu. Später verwendest du aber $backup-\>fromArray($data); $backup ist jedoch nicht definiert. Entwerder du ersetzt “$backup” durch “$favorite” oder anders herum 😉 Gruß Oliver

---

<div class="post-metadata">

**Author:** ![kUrTmAn](https://avatars.discourse-cdn.com/v4/letter/k/ed8c4c/32.png) [@kUrTmAn](https://forum.shopware.com/u/kUrTmAn)\
**Post date:** [6. Oktober 2013 um 13:33 UTC](https://forum.shopware.com/t/extjs-record-wird-nur-mit-null-als-wert-gespeichert/15205/6 "2013-10-06T13:33:34Z")

</div>

Moin, ich bins nochmal. Hat leider etwas gedauert, bis ich mich wieder mit dem Plugin auseinander setzen konnte. Also ich habe jetzt die vorgeschlagenen Änderungen umgesetzt, doch leider funktioniert es noch nicht so wirklich. Wenn ich in meine Oberfläche (Bild1) die Checkboxen setzen und auch in den Textfeldern etwas eintrage, wird dies nicht in die Datenbank gespeichert. Dazu habe ich mal den Post des Request (Bild 2) und den Response (Bild 3) angehängt. Die Post Werte werden zum testen hart in den Code programmiert, doch nichtmal diese werden gespeichert. Deshalb füge ich nochmal das Model, den PHP- und den Main-Controller hinzug. Model -\> general.js `/\*\* \* Plugin: IdwBackupSystem \* Date: 05.10.13 \* Time: 13:44 \* @author Dennis Hinnenkamp \* @category: Plugin \* @package: IdwBackupSystem \*/ //{block name="backend/idw\_backup\_system/model/general"} Ext.define('Shopware.apps.IdwBackupSystem.model.General', { /\*\* \* Extends the standard Ext Model \* @string \*/ extend: 'Ext.data.Model', /\*\* \* The fields used for this model \* @array \*/ fields: [{ name: 'id', type: 'int', useNull: true }, { name: 'database\_backup', type: 'boolean' }, { name: 'fileserver\_backup', type: 'boolean' }, { name: 'email\_notification', type: 'boolean' }, { name: 'email\_address', type: 'string' }, { name: 'backup\_prefix', type: 'string' }], associations: [{ type: 'hasMany', model: 'Shopware.apps.Base.model.Article', name: 'getArticles', associationKey: 'articles' }], /\*\* \* Configure the data communication \* @object \*/ proxy:{ /\*\* \* Set proxy type to ajax \* @string \*/ type:'ajax', /\*\* \* Configure the url mapping for the different \* store operations based on \* @object \*/ api: { create: '{url controller="IdwBackupSystem" action="createGeneralConfig"}', update: '{url controller="IdwBackupSystem" action="updateGeneral"}', destroy: '{url controller="IdwBackupSystem" action="deleteGeneral"}' }, /\*\* \* Configure the data reader \* @object \*/ reader:{ type:'json', root:'data', totalProperty:'total' } } }); //{/block} ` PHP-Controller [code]\<?php /\*\*

- Plugin: IdwBackupSystem

- Date: 05.10.13

- Time: 12:51

- @author Dennis Hinnenkamp

- @version 1.0.0

- @copyright Ideenwirbler | Dennis  
\*/  
class Shopware\_Controllers\_Backend\_IdwBackupSystem extends Shopware\_Controllers\_Backend\_ExtJs  
{  
protected $repository = null;

Speichern fehlgeschlagen: ’ + rawData.error; message = Ext.String.format(message, record.get(‚id‘)); Shopware.Notification.createGrowlMessage(’’, message); } }); }, /\*\*[/code] Vielen Dank schonmal im Voraus!

---

<div class="post-metadata">

**Author:** ![Oliver\_Skroblin](https://avatars.discourse-cdn.com/v4/letter/o/6bbea6/32.png) [@Oliver\_Skroblin](https://forum.shopware.com/u/Oliver_Skroblin)\
**Post date:** [7. Oktober 2013 um 17:26 UTC](https://forum.shopware.com/t/extjs-record-wird-nur-mit-null-als-wert-gespeichert/15205/7 "2013-10-07T17:26:44Z")

</div>

Hi, ich vermute dass dein Problem in der fromArray Methode besteht. Die fromArray Methode prüft ob in dem Model eine Setter Funktion für jedes der übergebenen Array Elemente existiert. Dies prüft Sie, indem einfach ein “ucFirst” auf die Variable gemacht wird und ein “set” davor gesetzt wird. In deinem Beispiel sieht dies wie folgt aus: Array Element: “backup\_prefix” geprüft Funktion: “setBackup\_prefix” Diese Funkion existiert jedoch in deinem Model nicht. Wenn du dies umgestellt hast sollte es funktionieren. Weitere Fehler sind mir nicht aufgefallen.

---

<div class="post-metadata">

**Author:** ![Ideenwirbler](https://avatars.discourse-cdn.com/v4/letter/i/7993a0/32.png) [@Ideenwirbler](https://forum.shopware.com/u/Ideenwirbler)\
**Post date:** [8. Oktober 2013 um 00:18 UTC](https://forum.shopware.com/t/extjs-record-wird-nur-mit-null-als-wert-gespeichert/15205/8 "2013-10-08T00:18:04Z")

</div>

Hey, Vielen Dank, es lag wirklich an den falschen Methoden innerhalb des Models. Aber nun habe ich eine andere Frage: Wie kann ich die Daten, welche ich eben gespeichert habe mittels PHP-Controller beim starten des Fensters laden und die Felder mit den Werten vorbelegen? So dass ich später einfach nur noch ein Change Handler auf die Elemente setzen und die Datenbank aktualisieren muss? Ups…mit meinem anderen Account eingeloggt 🙂

---

<div class="post-metadata">

**Author:** ![kUrTmAn](https://avatars.discourse-cdn.com/v4/letter/k/ed8c4c/32.png) [@kUrTmAn](https://forum.shopware.com/u/kUrTmAn)\
**Post date:** [12. Oktober 2013 um 18:39 UTC](https://forum.shopware.com/t/extjs-record-wird-nur-mit-null-als-wert-gespeichert/15205/9 "2013-10-12T18:39:39Z")

</div>

push

---

<div class="post-metadata">

**Author:** ![Ideenwirbler](https://avatars.discourse-cdn.com/v4/letter/i/7993a0/32.png) [@Ideenwirbler](https://forum.shopware.com/u/Ideenwirbler)\
**Post date:** [29. Oktober 2013 um 15:50 UTC](https://forum.shopware.com/t/extjs-record-wird-nur-mit-null-als-wert-gespeichert/15205/10 "2013-10-29T15:50:01Z")

</div>

-\> push!
