Ich habe im Backend ein seperates Attribute aus s_order_detials_attributes im LIsting als Checkbox dargestellt und möchte natürlich, dass dieses mit gespeichert wird.
Kann dies in den Prozess mit eingebunden werden oder muss ich das separat speichern zb.
//{block name="backend/order/view/detail/position" append}
Ext.define('Shopware.apps.Order.view.detail.BackPosition', {
override: 'Shopware.apps.Order.view.detail.Position',
.....
traceGridEvents: function() {
var me = this;
me.rowEditor.on('edit', function (editor, e) {
if((e.newValues.md_express != e.originalValues.md_express) && e.record.internalId){
//hier den wert in s_order_details_attributes überschreiben
console.log('SET md_express to '+e.newValues.md_express+' in table s_order_details_attributes detailID:'+e.record.internalId)
}
});
});
//{/block}
Wie speichere ich das ganze elegant ab ohne jetzt AJAX zu verwenden.
Ich habe das ganze jetzt über den Controller gesteuert
//{block name="backend/order/controller/detail"}
//{$smarty.block.parent}
Ext.define('Shopware.apps.Order.controller.BackendDetail', {
override:'Shopware.apps.Order.controller.Detail',
onSavePosition: function(editor, e, order, options) {
var me = this;
originalCallback = options.callback;
var customCallback = function(AttributeFields, success) {
Ext.callback(originalCallback, this, arguments);
Ext.Ajax.request({
method: 'POST',
url: '{url controller=AttributeData action=saveData}',
params: {
_foreignKey:AttributeFields.internalId,
_table: 's_order_details_attributes',
__attribute_md_express: Number(false)
}
});
};
if (!options.callback || options.callback.toString() !== customCallback.toString()) {
options.callback = customCallback;
}
me.callParent([editor, e, order, options]);
}
});
//{/block}
da erhalte ich die meldung
An exception occurred while executing ‘INSERT INTO s_order_details_attributes (md_express, detailid) VALUES(?, ?)’ with params [“0”, “1521”]:
Er sollte eigentlich ein UPDATE durchführen und vorallem warum detailid anstelle von detailID