Tipp #11: Minimal-Fixtures für Produkttypen
Es folgen einige Beispiel Fixtures für verschiedene Produkttypen. Sie sind so minimal gehalten, dass die Daten gerade ausreichen, um die Produkte und ggf. Produktbeziehungen anzulegen. In den meisten Fällen wird man zusätzliche Attribute wie Name, Status, Sichtbarkeit, Preis und Lagerbestand benötigen.
Konfigurierbares Produkt
eav: catalog_product: - entity_id: 1 sku: simple-1 type_id: simple attribute_set_id: 4 color: green - entity_id: 2 sku: simple-2 type_id: simple attribute_set_id: 4 color: red - entity_id: 3 sku: conf-1 type_id: configurable attribute_set_id: 4 super_attributes: - color configurable_children: - 1 - 2
Hiermit wird ein konfigurierbares Produkt mit zwei Einzelprodukten angelegt (color: green und color: red), vorausgesetzt das color
Attribut hat diese Werte. Für Extension-Tests auf einer jungfräulichen Magento-Instanz kann man sich diese Attributwerte wie folgt anlegen:
tables: eav_attribute_option: - option_id: 3 attribute_id: 92 sort_order: 0 - option_id: 4 attribute_id: 92 sort_order: 0 eav_attribute_option_value: - value_id: 3 option_id: 3 store_id: 0 value: green - value_id: 4 option_id: 4 store_id: 0 value: red
“color” existiert bereits als Attribut mit der ID 92 und in der eav_attribute_option
Tabelle gibt es im Standard nur die Optionen mit der id 1 und 2 (“Male” und “Female” für “gender”). Dadurch dass wir in der Fixture bei ID 3 beginnen, werden diese nicht gelöscht.
Bündelprodukt (Variante 1)
eav: catalog_product: - entity_id: 1 sku: simple-1 type_id: simple attribute_set_id: 4 - entity_id: 2 sku: simple-2 type_id: simple attribute_set_id: 4 - entity_id: 3 sku: simple-3 type_id: simple attribute_set_id: 4 - entity_id: 4 sku: simple-4 type_id: simple attribute_set_id: 4 - entity_id: 5 sku: bundle-1 type_id: bundle attribute_set_id: 4 bundle_options: 1: [1, 2] 2: [3, 4]
Diese Fixture erstellt ein Bündelprodukt mit zwei Auswahlen (selection_id
1 und 2), mit den einfachen Produkten 1 und 2, bzw. 3 und 4 als Optionen. Der Auswahltyp ist immer “Radio” und es ist nicht möglich, zusätzliche Einstellungen wie “Erforderlich” oder “Anzahl” festzulegen. Benötigt man diese, müssen die Bündel-Tabellen manuell gefüllt werden, siehe Variante 2:
Bündelprodukt (Variante 2)
Durch die direkte Befüllung der Bündel-Tabellen, können Bündelprodukte beliebig konfiguriert werden:
eav: catalog_product: - entity_id: 1 type_id: bundle has_options: 1 required_options: 1 sku: bundle - entity_id: 2 type_id: simple sku: fix - entity_id: 3 type_id: simple sku: select1 - entity_id: 4 type_id: simple sku: select2 tables: bundle/option: - option_id: 1 parent_id: 1 required: 1 type: checkbox position: 0 - option_id: 2 parent_id: 1 required: 1 type: select position: 1 - option_id: 3 parent_id: 1 required: 0 type: select position: 1 bundle/option_value: - value_id: 1 option_id: 1 store_id: 1 title: Fix - value_id: 2 option_id: 2 store_id: 1 title: Select bundle/selection: - selection_id: 1 option_id: 1 parent_product_id: 1 product_id: 2 is_default: 1 selection_qty: 1 - selection_id: 2 option_id: 2 parent_product_id: 1 product_id: 3 is_default: 0 selection_qty: 1 - selection_id: 3 option_id: 2 parent_product_id: 1 product_id: 4 is_default: 0 selection_qty: 1 - selection_id: 4 option_id: 3 parent_product_id: 1 product_id: 2 is_default: 1 selection_qty: 1
Gruppiertes Produkt
eav: catalog_product: - entity_id: 1 type_id: simple sku: simple-1 attribute_set_id: 4 - entity_id: 2 type_id: simple sku: simple-2 attribute_set_id: 4 - entity_id: 3 type_id: grouped sku: set attribute_set_id: 4 tables: catalog/product_link: - link_id: 1 product_id: 3 linked_product_id: 1 link_type_id: 3 - link_id: 2 product_id: 3 linked_product_id: 2 link_type_id: 3
Hier gibt es Stand heute (EcomDev_PHPUnit 0.3.7) keine spezielle Syntax wie bei den konfigurierbaren Produkten, so dass wir die Verknüpfung direkt über die Tabelle catalog_product_link
vornehmen müssen.