Расширяет модели Shopware

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

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


person fnlls10    schedule 04.04.2016    source источник


Ответы (1)


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

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

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

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

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

Надеюсь, это поможет.

С уважением!

person barbieswimcrew    schedule 14.04.2016