# Neue Felder in Tabelle s\_order beim Bestellvorgang befüllen?

**URL:** <https://forum.shopware.com/t/neue-felder-in-tabelle-s-order-beim-bestellvorgang-befullen/12492>\
**Category:** Shopware 3.5\
**Tags:** programming\
**Created:** [4. April 2013 um 12:29 UTC](https://forum.shopware.com/t/neue-felder-in-tabelle-s-order-beim-bestellvorgang-befullen/12492 "2013-04-04T12:29:14Z")\
**Posts on this page:** 17\
**Page:** 2

<div class="post-metadata">

**Author:** ![Daniel\_S](https://avatars.discourse-cdn.com/v4/letter/d/7bcc69/32.png) [@Daniel\_S](https://forum.shopware.com/u/Daniel_S)\
**Post date:** [8. April 2013 um 17:07 UTC](https://forum.shopware.com/t/neue-felder-in-tabelle-s-order-beim-bestellvorgang-befullen/12492/21 "2013-04-08T17:07:42Z")

</div>

[quote=„Stefan Hamann“]Ja, das ist okay - habe schon drüber geschaut und auch ein paar problematische Stellen gefunden - schicke dir Morgen früh eine lauffähige Version.[/quote] Hab recht vielen Dank, ich bin mit fast allem gut klar gekommen, habe immer über Google oder wie auch immer Lösungsansätze gefunden und auch hier die Doku half mir immer weiter, grad was auch das Verständnis des Event und Hook Handlings angeht, aber das im Backend habe ich nicht gepackt bekommen. Nochmals vielen Dank.

---

<div class="post-metadata">

**Author:** ![Stefan\_Hamann](https://avatars.discourse-cdn.com/v4/letter/s/5e9695/32.png) [@Stefan\_Hamann](https://forum.shopware.com/u/Stefan_Hamann)\
**Post date:** [9. April 2013 um 07:52 UTC](https://forum.shopware.com/t/neue-felder-in-tabelle-s-order-beim-bestellvorgang-befullen/12492/22 "2013-04-09T07:52:38Z")

</div>

Hallo Daniel, habe dir gerade die korrigierte Version des Plugins geschickt. Für alle anderen gibt es die Lösung hier in unserem Gist-Verzeichnis: [http://wiki.shopware.de/shopware.php?sViewport=gist](http://wiki.shopware.de/shopware.php?sViewport=gist)

---

<div class="post-metadata">

**Author:** ![Daniel\_S](https://avatars.discourse-cdn.com/v4/letter/d/7bcc69/32.png) [@Daniel\_S](https://forum.shopware.com/u/Daniel_S)\
**Post date:** [9. April 2013 um 08:14 UTC](https://forum.shopware.com/t/neue-felder-in-tabelle-s-order-beim-bestellvorgang-befullen/12492/23 "2013-04-09T08:14:21Z")

</div>

Hallo Stefan, wo hast du das denn hin geschickt? Als Email kam nichts an. Gruß Daniel

---

<div class="post-metadata">

**Author:** ![Stefan\_Hamann](https://avatars.discourse-cdn.com/v4/letter/s/5e9695/32.png) [@Stefan\_Hamann](https://forum.shopware.com/u/Stefan_Hamann)\
**Post date:** [9. April 2013 um 08:16 UTC](https://forum.shopware.com/t/neue-felder-in-tabelle-s-order-beim-bestellvorgang-befullen/12492/24 "2013-04-09T08:16:19Z")

</div>

An [webdesign-.......@gmx.de](mailto:webdesign-.......@gmx.de) Habe es jetzt gerade nochmal geschickt

---

<div class="post-metadata">

**Author:** ![Fabi](https://avatars.discourse-cdn.com/v4/letter/f/22d042/32.png) [@Fabi](https://forum.shopware.com/u/Fabi)\
**Post date:** [2. August 2013 um 14:52 UTC](https://forum.shopware.com/t/neue-felder-in-tabelle-s-order-beim-bestellvorgang-befullen/12492/25 "2013-08-02T14:52:07Z")

</div>

Hallo Zusammen, der Code auf Gist ist spitze. Genau das was ich gesucht hab. Allerdings ist mir ein Fehler aufgefallen. Die overview.js wird im Eventhander onBackendOrderPostDispatch nicht korrekt angesprochen. Richtig ist backend/order/detail/ordermod/overview.js. Ich wollte außerdem ein Feld vom Typ Datetime, statt zwei Textspalten, hinzufügen. Funktioniert auch alles wunderbar. Das Feld wird in der DB nach einer Bestellung befüllt. Im Backend seh ich in der Liste eine entsprechende Spalte und auf der Overview-Seite das entsprechende Feld, aber es ist in beiden Fällen immer leer. Ich vermute, daß ich noch den korrekten Datentyp in attribute.js angeben muss, damit es funktioniert. Wie muss der lauten? Hab’s schon mit „date“ und „datetime“ ausprobiert. Hat allerdings nicht geklappt. Viele Grüße Fabian

---

<div class="post-metadata">

**Author:** ![Fabi](https://avatars.discourse-cdn.com/v4/letter/f/22d042/32.png) [@Fabi](https://forum.shopware.com/u/Fabi)\
**Post date:** [7. August 2013 um 11:51 UTC](https://forum.shopware.com/t/neue-felder-in-tabelle-s-order-beim-bestellvorgang-befullen/12492/26 "2013-08-07T11:51:37Z")

</div>

Moin moin, gibt’s ne Antwort auf meine Frage, welcher Datentyp in attribute.js anzugeben ist? Oder funktioniert nur String?

---

<div class="post-metadata">

**Author:** ![Fabi](https://avatars.discourse-cdn.com/v4/letter/f/22d042/32.png) [@Fabi](https://forum.shopware.com/u/Fabi)\
**Post date:** [6. September 2013 um 10:16 UTC](https://forum.shopware.com/t/neue-felder-in-tabelle-s-order-beim-bestellvorgang-befullen/12492/27 "2013-09-06T10:16:46Z")

</div>

Push… irgendjemand muss doch wissen, wie man die attribute.js einstellt

---

<div class="post-metadata">

**Author:** ![eibe](https://avatars.discourse-cdn.com/v4/letter/e/977dab/32.png) [@eibe](https://forum.shopware.com/u/eibe)\
**Post date:** [2. Januar 2014 um 11:50 UTC](https://forum.shopware.com/t/neue-felder-in-tabelle-s-order-beim-bestellvorgang-befullen/12492/28 "2014-01-02T11:50:52Z")

</div>

Ein frohes Neues. Ich muss mich hier mal ranhängen. Das Beispiel-Plugin ist genau das was ich gesucht habe. Ich habe im Template ein neues Select-Feld mit 4 Auswahlmöglichkeiten eingebaut. Wie muss ich `$orderAttributeModel-\>setOrdermodRandom1(rand(1,49));` ändern, damit die Auswahl des Kunden (Value) gespeichert wird? Das Select-Feld: [code] Auswahl 1 Auswahl 2 Auswahl 3 Auswahl 4[/code]

---

<div class="post-metadata">

**Author:** ![eibe](https://avatars.discourse-cdn.com/v4/letter/e/977dab/32.png) [@eibe](https://forum.shopware.com/u/eibe)\
**Post date:** [13. Januar 2014 um 12:09 UTC](https://forum.shopware.com/t/neue-felder-in-tabelle-s-order-beim-bestellvorgang-befullen/12492/29 "2014-01-13T12:09:48Z")

</div>

Ich komme hier leider keinen Schritt weiter. Beim Checkout soll die Auswahl des Nutzers in das neue Feld geschrieben werden. Ich habe nur keine Ahnung, wie ich den Value der ausgewählten Option in die Datenbank bekomme.

---

<div class="post-metadata">

**Author:** ![Fabi](https://avatars.discourse-cdn.com/v4/letter/f/22d042/32.png) [@Fabi](https://forum.shopware.com/u/Fabi)\
**Post date:** [13. Januar 2014 um 14:39 UTC](https://forum.shopware.com/t/neue-felder-in-tabelle-s-order-beim-bestellvorgang-befullen/12492/30 "2014-01-13T14:39:42Z")

</div>

Moni Eibe, in der Methode onSaveOrder hast Du die beiden Zeilen `$orderAttributeModel-\>setOrdermodRandom1(rand(1,49)); $orderAttributeModel-\>setOrdermodRandom2(rand(1,49));` (In Bootstrap.php Zeile 62 und 63) Diese schreiben zwei Zufällige Werte in zwei Spalten. Da Du nur eine Spalte befüllen willst, kannst Du deswegen eine Zeile löschen. Der Aufruf von $orderAttributeModel-\>set…() ist abhängig davon, wie Du Dein Feld in der Datenbank genannt hast, und wie Dein Modul heisst. Bei der Installation des Plugins definiert man, wie dieser Aufruf zu lauten hat. Diese Definition wird in der Methode installOrderAttributes durchgeführt. Im Original-Plugin hast Du zwei mal den Aufruf von `Shopware()-\>Models()-\>addAttribute( 's\_order\_attributes', 'ordermod', 'Random1', 'DECIMAL(12,4)', false, 0.0000); Shopware()-\>Models()-\>addAttribute( 's\_order\_attributes', 'ordermod', 'Random2', 'DECIMAL(12,4)', false, 0.0000);` Für die Felder Random1 und 2. Den einen Aufruf kannst löschen. Den anderen passt Du für Dich an. Wobei der 2. Parameter ‚ordermod‘ entsprechend Deinem Modul genannt werden sollte und der 3. Parameter muss wie Dein Feld in der Datenbank heissen. Der 4. Parameter gibt den Datentyp der Spalte an. Aus diesen beiden Parametern ergibt sich nun der genau Methoden-Name für $orderAttributeModel-\>set…() Nämlich $orderAttributeModel-\>setModulnameFeldname() Wichtig ist, daß Du nur Buchstaben in beiden Parametern verwendest. Mit einem \_ im Namen hatte ich z.B. Probleme. Beispiel: Angenommen wir wollen eine Erweiterung haben, welches am Ende der Bestellung eine kleine Umfrage beim Kunden startet. Nur eine Selectbox und eine Auswahl von 1-5 Sternen soll angezeigt werden. Nennen wir das Modul deswegen Bewertung und Dein Attribut Sterne. Dann müssten wir zum einen in installOrderAttributes() folgendes stehen haben: `Shopware()-\>Models()-\>addAttribute( 's\_order\_attributes', 'bewertung', 'Sterne', 'INT(11)', false, 0.0000);` und zum anderen in onSaveOrder() in Zeile 62: `$orderAttributeModel-\>setBewertungSterne($sterne)` Capital-Letters werden automatisch gesetzt, denk ich. Außerdem musst Du den Wert für sterne selbst ermitteln. Ich denke daß es per \_POST[‚sterne‘] gehen sollte. Weiß jedoch nicht, ob’s auch best Practice ist. Viele Grüße Fabian

---

<div class="post-metadata">

**Author:** ![eibe](https://avatars.discourse-cdn.com/v4/letter/e/977dab/32.png) [@eibe](https://forum.shopware.com/u/eibe)\
**Post date:** [13. Januar 2014 um 15:38 UTC](https://forum.shopware.com/t/neue-felder-in-tabelle-s-order-beim-bestellvorgang-befullen/12492/31 "2014-01-13T15:38:22Z")

</div>

Hallo Fabian, erstmal vielen Dank für Deine Antwort. Soweit funktioniert auch alles, also das Feld in s\_order\_attributes wird angelegt und es erscheint im Backend. [quote=“Fabi\_”] und zum anderen in onSaveOrder() in Zeile 62: `$orderAttributeModel-\>setBewertungSterne($sterne)` Capital-Letters werden automatisch gesetzt, denk ich. Außerdem musst Du den Wert für sterne selbst ermitteln. Ich denke daß es per \_POST[‘sterne’] gehen sollte. Weiß jedoch nicht, ob’s auch best Practice ist. [/quote] Genau hier bleibe ich aber hängen. Wenn ich das standardmäßige Kommentarfeld (sComment) mit `$orderAttributeModel-\>setOrdermodRandom1($\_POST['sComment']);` hole, schreibt er es mir in das Feld Random1. Das funktioniert also. Ich schaffe es nur nicht, ein von mir angelegtes Kommentarfeld/Select zu holen, bspw: `$orderAttributeModel-\>setOrdermodRandom1($\_POST['meinKommentarFeld']);` Stehe da gerade total auf dem Schlauch.

---

<div class="post-metadata">

**Author:** ![Fabi](https://avatars.discourse-cdn.com/v4/letter/f/22d042/32.png) [@Fabi](https://forum.shopware.com/u/Fabi)\
**Post date:** [13. Januar 2014 um 15:49 UTC](https://forum.shopware.com/t/neue-felder-in-tabelle-s-order-beim-bestellvorgang-befullen/12492/32 "2014-01-13T15:49:06Z")

</div>

Moin Eibe, also wenn’s mit sComment funktioniert und mit meinKommentarFeld nicht, kann es sein, daß meinKommentarFeld nicht an den Server gesendet wird, oder ein Filter dieses vorher entfernt. Welchen Browser nutzt Du? Im Firefox mit dem Addon Firebug kannst Du unter dem Reiter Netzwerk sehen, welche POST-Daten verschickt werden. Gleiches ist auch in Chrome möglich. Hier gibt’s dieses Feature jedoch schon von Haus aus. Wenn das Feld meinKommentarFeld übertragen wird, dann sprich das für einen Filter innerhalb von Shopware. Wenn nicht, dann hast Dein Select-Tag im falschen Forumlar platziert. Viele Grüße Fabian

---

<div class="post-metadata">

**Author:** ![eibe](https://avatars.discourse-cdn.com/v4/letter/e/977dab/32.png) [@eibe](https://forum.shopware.com/u/eibe)\
**Post date:** [20. Januar 2014 um 15:34 UTC](https://forum.shopware.com/t/neue-felder-in-tabelle-s-order-beim-bestellvorgang-befullen/12492/33 "2014-01-20T15:34:05Z")

</div>

Hab es jetzt! meinKommentarFeld wurde tatsächlich nicht gesendet. In confirm.tpl gibt es eine Form, die den sComment als input type=„hidden“ mitschickt. Mal eine Zusammenfassung, evtl. hilft es ja jemanden. Aufgabenstellung für mich war: - Select-Feld (4 Optionen) auf der Confirm-Seite, - ausgewählte Option wird in der DB gespeichert, - ausgewählte Option erscheint in Bestellbestätigungs-Mail Ich habe das ganze nun folgendermaßen gelöst: Im confirm.tpl habe ich (zusätzlich zu meinem eigentlichen Select) der o.g. Form ein input type=„hidden“ angehängt. Wählt der Kunde etwas aus, wird der Value dieses inputs per Javascript geändert. Im Event ‚Enlight\_Controller\_Action\_PreDispatch\_Frontend\_Checkout‘, Action ‚finish‘ habe ich mein Feld (sInstFound) an die Session angehängt: ` public function onFrontendPreDispatchCheckout(Enlight\_Event\_EventArgs $arguments) { $controller = $arguments-\>getSubject(); $view = $controller-\>View(); $request = $controller-\>Request(); if ($request-\>getActionName() !== 'finish' || $request-\>getModuleName() !== 'frontend' || !$view-\>hasTemplate()) { return; } Shopware()-\>Session()-\>sInstFound = $request-\>getParam('sInstFound'); ` Jetzt das ganze in der DB speichern und an die Bestätigungs-Mail aufnehmen. Event ‚Shopware\_Modules\_Order\_SendMail\_FilterVariables‘: Übergebenen Wert wiederholen: ` $monfund = Shopware()-\>Session()-\>sInstFound; ` In die DB schreiben: ` $orderAttributeModel-\>setOrdermodRandom1($monfund); ` In der Bestellbestätigung als {$attributes.attributeX} zur Verfügung stellen: ` $orderAttributes['attributes']['attributeX'] = (string)$monfund; ` Das geht vermutlich eleganter, aber es läuft…

---

<div class="post-metadata">

**Author:** ![kube](https://avatars.discourse-cdn.com/v4/letter/k/b19c9b/32.png) [@kube](https://forum.shopware.com/u/kube)\
**Post date:** [3. Juni 2014 um 09:30 UTC](https://forum.shopware.com/t/neue-felder-in-tabelle-s-order-beim-bestellvorgang-befullen/12492/34 "2014-06-03T09:30:44Z")

</div>

Hallo, kann mir jemand sagen, wo ich das Plugin finde, über das hier besprochen wurde. Also das mit: `backend/order/detail/ordermod/overview.js`und`$orderAttributeModel-\>setOrdermodRandom1(rand(1,49));` Ich habe nur das hier gefunden: [Shopware 4 - Add 2 new colums to Order-Model & fill them through order process](https://gist.github.com/sthamann/5310948) Aber das ist das andere hier besprochene Beispiel nur mit Bootstrap, aber ohne Backend-JS.

---

<div class="post-metadata">

**Author:** ![eibe](https://avatars.discourse-cdn.com/v4/letter/e/977dab/32.png) [@eibe](https://forum.shopware.com/u/eibe)\
**Post date:** [3. Juni 2014 um 10:17 UTC](https://forum.shopware.com/t/neue-felder-in-tabelle-s-order-beim-bestellvorgang-befullen/12492/35 "2014-06-03T10:17:00Z")

</div>

> [@kube](#):
>
> Hallo, kann mir jemand sagen, wo ich das Plugin finde, über das hier besprochen wurde. Also das mit: `backend/order/detail/ordermod/overview.js`und`$orderAttributeModel-\>setOrdermodRandom1(rand(1,49));` Ich habe nur das hier gefunden: [Shopware 4 - Add 2 new colums to Order-Model & fill them through order process](https://gist.github.com/sthamann/5310948) Aber das ist das andere hier besprochene Beispiel nur mit Bootstrap, aber ohne Backend-JS.

---

<div class="post-metadata">

**Author:** ![TeichDatensysteme](https://avatars.discourse-cdn.com/v4/letter/t/43a26b/32.png) [@TeichDatensysteme](https://forum.shopware.com/u/TeichDatensysteme)\
**Post date:** [27. Oktober 2016 um 10:15 UTC](https://forum.shopware.com/t/neue-felder-in-tabelle-s-order-beim-bestellvorgang-befullen/12492/36 "2016-10-27T10:15:26Z")

</div>

Ich möchte den Thread noch einmal kurz aufleben lassen - das Ganze funktioniert aber nicht bei Bestellungen, die über andere Paymentanbieter laufen, korrekt? Weil, Ihr übertragt “nur” Daten von dir Confirm auf die Finish - wenn z.B. per PayPal gekauft wird, läuft die Confirm aber erst auf (wie gesagt) z.B. an PayPal, und von PayPal auf die Finish des Shops, dabei werden die POST Daten nicht übertragen.

Hat dafür einer eine Lösung?

Schöne Grüße,  
Niklas

---

<div class="post-metadata">

**Author:** ![tprazuch](https://avatars.discourse-cdn.com/v4/letter/t/6a8cbe/32.png) [@tprazuch](https://forum.shopware.com/u/tprazuch)\
**Post date:** [5. Dezember 2016 um 13:41 UTC](https://forum.shopware.com/t/neue-felder-in-tabelle-s-order-beim-bestellvorgang-befullen/12492/37 "2016-12-05T13:41:32Z")

</div>

Fuer v5.2 muss man:

1. in Boostrap.php create an event to extend sql query  
$this-\>subscribeEvent(  
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;‚Shopware\Models\Order\Repository::getBackendOrdersQueryBuilder::after‘,  
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;‚backendGetBackendOrdersQueryBuilder‘  
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;);
2. in Boostrap.php create new function to extend the query with join to attributes

public function backendGetBackendOrdersQueryBuilder(Enlight\_Event\_EventArgs $args)  
&nbsp;&nbsp; &nbsp;{  
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;$builder = $args-\>getReturn();

&nbsp; &nbsp; &nbsp; &nbsp; $builder-\>leftJoin(‚orders.attribute‘, ‚attribute‘);  
&nbsp; &nbsp; &nbsp; &nbsp; $builder-\>addSelect(array(‚attribute‘));

&nbsp; &nbsp; &nbsp; &nbsp; $args-\>setReturn($builder);  
&nbsp;&nbsp; &nbsp;}

1. 

in your plugin files create backend\xxx\_order\model\order.js;  
and extend fields block:  
//{block name=„backend/order/model/order/fields“ append}  
{  
&nbsp;&nbsp; &nbsp;name: ‚attribute.attribute1‘, type: ‚string‘&nbsp;  
},  
//{/block}

1. 

in view i.e. backend\xxx\_order\view\list\list.js  
read the attribute field with dataIndex:‚attribute.attribute1‘  
i.e. on order list show new column  
//{block name=„backend/order/view/list/list“ append}  
Ext.define(‚Shopware.apps.XxxOrder.view.list.List‘, {  
&nbsp; &nbsp; override: ‚Shopware.apps.Order.view.list.List‘,

getColumns: function() {  
&nbsp; &nbsp; &nbsp; &nbsp; var me = this;

&nbsp; &nbsp; &nbsp; &nbsp; var columns = me.callOverridden(arguments);

&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; var attrColumn = {  
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;header: ‚Attr1‘,  
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;dataIndex:‚attribute.attribute1‘,  
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;flex: 1,  
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;sortable: false  
&nbsp; &nbsp; &nbsp; &nbsp; };&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;  
&nbsp; &nbsp; &nbsp; &nbsp; return Ext.Array.insert(columns, 2, [attrColumn]);  
&nbsp; &nbsp; },

});  
//{/block}

[Vorherige Seite](https://forum.shopware.com/t/neue-felder-in-tabelle-s-order-beim-bestellvorgang-befullen/12492.md?page=1)
