Hallo,
ich möchte in den E-Mail-Vorlagen meine CustomFields verwenden. Hierbei handelt es sich um Felder, die im Backend verwendet werden. Diese sollen dann beim Versand einer Mail genutzt werden.
Nach folgender Anleitung habe ich hierfür einen Decorator erstellt:
Wenn ich dann {{ myCustomData }} in meinem E-Mail-Template verwende, wird auch „Example data“ ausgegeben.
Nun möchte ich das ganze mit Custom Fields verknüpfen. Dafür habe ich die CustomFields direkt über das Plugin erstellt
public function install(InstallContext $installContext): void
{
$customFieldSetRepository = $this->container->get('custom_field_set.repository');
$customFieldSetRepository->create([
[
'name' => 'custom_example',
'config' => [
'label' => [
'de-DE' => 'Example Label',
'en-GB' => 'Example Label'
]
],
'relations' => [[
'entityName' => 'order'
]],
'customFields' => [
[
'name' => 'custom_example_one',
'type' => CustomFieldTypes::HTML,
'config' => [
'label' => [
'de-DE' => 'Example 1',
'en-GB' => 'Example 1',
],
'componentName' => "sw-text-editor",
'customFieldType' => "textEditor"
]
]
]
],
], $installContext->getContext());
}
Die Datei AddDataToMails, die nach der Anleitung erstellt habe, sieht wie folgt aus:
<?php declare(strict_types=1);
namespace Blauband\EmailBase\Service;
use Shopware\Core\Content\Mail\Service\AbstractMailService;
use Shopware\Core\Framework\Context;
use Symfony\Component\Mime\Email;
class AddDataToMails extends AbstractMailService
{
/**
* @var AbstractMailService
*/
private AbstractMailService $mailService;
public function __construct(AbstractMailService $mailService)
{
$this->mailService = $mailService;
}
public function getDecorated(): AbstractMailService
{
return $this->mailService;
}
public function send(array $data, Context $context, array $templateData = []): ?Email
{
$templateData['myCustomData'] = 'Example data';
return $this->mailService->send($data, $context, $templateData, );
}
}
Ich weiß nicht, wie ich in die Variable $templateData[‚myCustomData‘] die Daten aus einer Customfield laden kann…
Hat hierzu jemand eine Idee?