2016-04-04 8 views
2

Ich muss Shopware Varianten Modelle erweitern, um einige benutzerdefinierte Attribute wie die Art des Metalls, die Art von Stein ein Juwel, die der Basisartikel ist hinzuzufügen. Diese Attribute werden sowohl im Backend als auch im Frontend verwendet.Erweitert Shopware Modelle

Wie kann ich das tun? Danke

Antwort

7

Die Erweiterung des Shopware-Kernmodells selbst ist überhaupt nicht möglich. Je nachdem, welche spezifischen Modell, das Sie versuchen, es zu verlängern würden zwei verschiedene Möglichkeiten für einige Abhilfe sein:

  1. Wenn sein der Artikel selbst, die Sie erweitern möchten können Sie die benutzerdefinierte verwenden Attributfelder wie hier beschrieben: http://community.shopware.com/Anlegen,-Anpassen-und-Ausgabe-von-Artikel-Attributen_detail_1208.html

  2. Ein anderer Weg wäre, ein Plugin zu schreiben, wo Sie Attributfelder nach Code auf plugin install() erstellen. Dies ist nur für Entitäten möglich, die eine Attributtabelle besitzen, die zu der Entität selbst gehört. Zum Beispiel s_order und s_order_attributes

Für den zweiten Weg, um eine Methode in Ihrer Plugins Bootstrap.php wie folgt aus und rufen Sie die Methode in der Installation von Plugin-create() Methode:

public function installOrderAttributes() 
{ 
    Shopware()->Models()->addAttribute(
     's_order_attributes', 
     'ordermod', 
     'Random1', 
     'DECIMAL(12,4)', 
     false, 
     0.0000); 
    Shopware()->Models()->addAttribute(
     's_order_attributes', 
     'ordermod', 
     'Random2', 
     'DECIMAL(12,4)', 
     false, 
     0.0000); 

    $metaDataCacheDoctrine = Shopware()->Models()->getConfiguration()->getMetadataCacheImpl(); 
    $metaDataCacheDoctrine->deleteAll(); 

    Shopware()->Models()->generateAttributeModels(array('s_order_attributes')); 
} 

Die addAttribute () Funktion in /engine/Shopware/Components/Model/ModelManager.php hat die folgende Signatur:

/** 
* Shopware helper function to extend an attribute table. 
* 
* @param string $table Full table name. Example: "s_user_attributes" 
* @param string $prefix Column prefix. The prefix and column parameter will be the column name. Example: "swag". 
* @param string $column The column name 
* @param string $type Full type declaration. Example: "VARCHAR(5)"/"DECIMAL(10, 2)" 
* @param bool $nullable Allow null property 
* @param null $default Default value of the column 
* @throws \InvalidArgumentException 
*/ 
public function addAttribute($table, $prefix, $column, $type, $nullable = true, $default = null); 

Hope this helfen.

Mit freundlichen Grüßen!