Hallo Leute,
ich versuche momentan ein eigenes Attribut, das per Plugin angelegt wird, mit in der Standard-Artikelübersicht anzeigen zu lassen.
Ich habe mich dabei ein wenig an diesem Beitrag https://forum.shopware.com/discussion/36490/artikel-attribute-und-freitextfelder-in-der-artikel-liste und an diesem https://forum.shopware.com/discussion/34055/artikel-attribute-und-freitextfelder-keine-speicherung orientiert. Beide führen zu einem Teilerfolg, aber nicht wirklich zum gewünschten Ergebnis.
Beim zweiten Eintrag wird die Spalte zwar angezeigt, ich kann aber keine Inline-Änderungen vornehmen bzw. diese werden nicht gespeichert. Beim ersten Eintrag werden zwar Snippets für die Spalte angelegt und auch die testweise Ausblendung einzelner anderer Standard-Spalten funktioniert, mein neues Attribut ist jedoch nicht zu sehen.
Das hier ist mein Subscriber:
public function onArticleListPostDispatch(\Enlight_Event_EventArgs $args)
{
/** @var \Shopware_Controllers_Backend_ArticleList $controller */
$controller = $args->getSubject();
$view = $controller->View();
$request = $controller->Request();
if($request->getActionName() === 'columnConfig'){
// Get column config status
$columnConfigStatus = $view->getAssign('success');
if($columnConfigStatus){
// Get column config data
$columnConfigData = $view->getAssign('data');
// Edit column config
$columnConfigData = $this->editColumnConfig($columnConfigData);
// Rewrite assign data
$view->assign('data', $columnConfigData);
}
}
}
/**
* Edit columns
*
* @param $columnConfigData
* @return mixed
*/
private function editColumnConfig($columnConfigData)
{
foreach ($columnConfigData as &$configData){
// Edit TestAttribute column
if($configData['alias'] == 'Attribute_testCheckbox'){
$configData['show'] = 1;
$configData['editable'] = 1;
// Example to hide article active column
}elseif($configData['alias'] == 'Detail_number'){
$configData['show'] = 0;
}
}
return $columnConfigData;
}
Und das hier wäre die grid.js:
//{block name="backend/article_list/view/main/grid"}
// {$smarty.block.parent}
Ext.define('Shopware.apps.AkProductAttributeIntegration.view.main.Grid', {
override: 'Shopware.apps.ArticleList.view.main.Grid',
getColumns: function () {
var me = this,
columns = me.callParent(arguments);
Ext.each(columns, function(columns) {
if (columns.dataIndex === "Attribute_testCheckbox") {
columns.header = '{s name=testCheckboxHeader}{/s}'
}
});
return columns;
}
});
//{/block}
Habt ihr eine Idee, wo mein Fehler liegt? Und ist die ColumnConfig Action überhaupt die korrekte oder sollte ich lieber die load Action nutzen?
Gruß, Alex