Das Problem:

Alle in Magento angelegten Attribute fangen mit Kleinbuchstaben an. Dies wird von Magento erzwungen, wenn man Attribute im Backend von Hand anlegt. Wenn die Attribute aber mit Hilfe von dem Skript mysql4-install-x.x.x.php erstellt werden, können sie mit einem beliebigem Zeichen anfangen, denn in diesem Falle wird die Validierung nicht durchgeführt. Die Attribute funktionieren einwandfrei innerhalb des Systems und werden auch beim Export in eine CSV-Datei mit dieser Schreibweise übernommen.

Es entsteht aber ein Problem beim Import einer CSV-Datei, deren Attribute auf diese Art und Weise erstellt wurden. Nachdem im Backend die Importdatei hinzugefügt, und der „Check Data“-Button betätigt wurde, wird die Fehlermeldung „invalid column“ angezeigt.

Die Validierung der zu importierenden Datei erfolgt in der Klasse

Mage_ImportExport_Model_Import_Entity_Product,

die von

Mage_ImportExport_Model_Import_Entity_Abstract

abgeleitet wird.

Die Validierungs-Regel erlaubt nur, diejenigen Spalten (in diesem Falle sind es Attribute) zu importieren, die mit Kleinbuchstaben anfangen. Großbuchstaben, Ziffern und Sonderzeichen werden als ungültig erachtet.

Die Lösung:

Um dieses Problem zu beheben haben wir ein Modul erstellt, das die Klasse Mage_ImportExport_Model_Import_Entity_Product erweitert und die Validierungs-Funktion validateData() überschreibt. Der Unterschied zwischen der originalen und unserer Funktion ist im regex-Pattern in der Zeile 679 zu finden.

Das ursprüngliche Magento-Modul sieht so aus:

Mage_ImportExport_Model_Import_Entity_Abstract
if (!preg_match('/^[a-z][a-z0-9_]*$/', $colName) && !$this->isAttributeParticular($colName)) {
$invalidColumns[] = $colName;
}

Unser Magento-Modul enthält folgende Zeilen:

C4B_ImportProductValidator_Model_Import_Entity_Product
if (!preg_match('/^[a-zA-Z0-9_]+$/', $colName) && !$this->isAttributeParticular($colName)) {
$invalidColumns[] = $colName;
}

Durch den Einsatz dieses Moduls wird der Import der CSV-Dateien nicht mehr mit einer „invalid column“-Meldung verhindert.

Das Modul ist eine Beta-Version – getestet, aber noch nicht live im Einsatz. Wir freuen uns über Feedback und ggf. auch Fehlermeldungen!

Dateien:
C4B_ImportProductValidator-0.0.1.zip