将自定义实体添加到Shopware 6中的电子邮件模板

时间:2019-11-13 14:35:39

标签: php entity shopware

我正在尝试将新实体添加到我的电子邮件模板中,所以我有: 1)我用自定义实体创建了一个新插件

        $connection->executeQuery('
            CREATE TABLE IF NOT EXISTS `my_entity` (
              `id` BINARY(16) NOT NULL,
              `message` VARCHAR(255) NOT NULL
            ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
        ');

2)我在此列中添加了第一行:

id      | name
bin... | test

3)我在db mail_template_typeavailable_entities中编辑此记录 {"order":"order","salesChannel":"sales_channel","myEntity":"my_entity"}

现在,当我编辑电子邮件时,twig告诉我有一个要使用的变量,但是当我使用它时,{{ myEntity.name }}中没有任何内容

请问我有一个清楚的解释,我该怎么做?

1 个答案:

答案 0 :(得分:0)

如果您调度自己的事件来发送邮件,则必须实现getAvailableData功能并将实体添加到集合中

public static function getAvailableData(): EventDataCollection
{
    return (new EventDataCollection())
        ->add('myEntity', new EntityType(MyEntityDefinition::class));
}

此外,您还必须创建一个getter函数以将数据提供给邮件模板。

public function getMyEntity(): MyEntityEntity
{
    return $this->myEntity;
}

否则,如果要将实体添加到已经存在的事件中,则可以向事件中使用的实体添加关联。