2016-04-04 3 views
2

Мне нужно расширить модели моделей Shopware, чтобы добавить некоторые пользовательские атрибуты, такие как тип металла, тип камня, драгоценный камень, который является основным предметом. Эти атрибуты будут использоваться как в бэкэнд, так и в интерфейсе.Расширяет модели магазина

Как я могу это сделать? Спасибо

ответ

7

Расширение основной модели магазина Shopware невозможно. В зависимости от того, какие конкретные модели вы пытаетесь расширить было бы два различных способа для некоторого обходного:

  1. Если его сама статья, которую вы хотите продлить, вы можете использовать настраиваемый атрибут поля, как описано здесь: http://community.shopware.com/Anlegen,-Anpassen-und-Ausgabe-von-Artikel-Attributen_detail_1208.html

  2. Другим способом было бы написать плагин, в котором вы создадите поля атрибута по коду в plugin install(). Это возможно только для объектов, которые имеют таблицу атрибутов, которая принадлежит самой сущности. Например s_order и s_order_attributes

Для второго способа создать метод в Bootstrap.php вашего плагина как следующий и вызвать метод в методе плагина установки():

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')); 
} 

AddAttribute (функция) в /engine/Shopware/Components/Model/ModelManager.php имеет следующую подпись:

/** 
* 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); 

Надеется, что это поможет.

С уважением!

Смежные вопросы