Hallo miteinander,
ich bin noch recht neu in Shopware und bin gerade dabei ein kleines Plugin zu schreiben. Das Plugin nimmt einige zusätzliche Daten bei der Bestellung entgegen und speichert sie in Attribute in der s_orders_detail_attributes. Das funktioniert soweit auch schon mal ganz gut. Nun geht es darum diese im Backend in der Bestellübersicht anzuzeigen und zwar am liebsten als zusätzliche Felder bei den Positionen.
Ich dachte bevor ich “echte” Daten dort anzeige, versuche ich erstmal die Tabelle dort zu erweitern und irgendeinen String anzuzeigen. Komme allerdings nicht wirklich weiter. Habe jetzt viel hier im Forum gelesen und das Tutorialprojekt zu dem Thema durchstöbert, aber bei mir will einfach nichts passieren
Ich habe folgende Komponenten:
Den Subscriber, der auf ein PostDispatch auf den Order Controller im Backend reagiert:
'onOrderPostDispatch'
];
}
public function __construct($pluginDirectory)
{
$this->pluginDirectory = $pluginDirectory;
}
public function onOrderPostDispatch(\Enlight_Event_EventArgs $args)
{
$controller = $args->getSubject();
$view = $controller->View();
$request = $controller->Request();
$view->addTemplateDir($this->pluginDirectory . '/Resources/views');
if ($request->getActionName() == 'getList') {
$view->extendsTemplate('backend/test_plugin/view/model/position.js');
$view->extendsTemplate('backend/test_plugin/view/detail/position.js');
}
}
}
Ich höre hier auf getList, weil er, soweit ich das verstehe an dieser Stelle die Liste zusammenbaut. Habe aber auch schon andere Actions ausprobiert. Ist das vielleicht der falsche Anknüpfungspunkt und da läuft vom Timing her was schief?
Dann meine Erweiterung der ExtJS-Klasse (liegt in Resources/views/backend/test_plugin/view/detail/position.js)
//{block name="backend/order/view/detail/position"}
// {$smarty.block.parent}
Ext.define('Shopware.apps.TestPlugin.view.detail.Position', {
override: 'Shopware.apps.Order.view.detail.Position',
getColumns:function (grid) {
console.log("Executing getColumns");
var me = this;
var columns = me.callParent(arguments);
columns.push(
{
header: 'Test',
dataIndex: 'test',
flex: 1,
renderer: function(value, metaData, record) {
return 'bla';
}
});
return columns;
}
});
//{/block}
Dann benötige ich glaube ich noch eine Model-Erweiterung (liegt in Resources/views/backend/test_plugin/model/position.js):
// {block name='backend/order/model/position/fields' append}
// {literal}
{ name: 'test', type: 'string' },
// {/literal}
// {/block}
Habe ich vielleicht irgendwas wichtiges vergessen? Das console.log() in der getColumns wird auch nicht aufgerufen leider.
Bin für jeden Hinweis dankbar!