Как установить значения информации о выставлении счетов и информации о доставке в пользовательских шаблонах электронной почты?
Это мой email_template.html
<table class="order-details">
<tr>
<td class="address-details">
<h3>{{trans "Billing Info"}}</h3>
<p>{{var formattedBillingAddress|raw}}</p>
</td>
{{depend order.getIsNotVirtual()}}
<td class="address-details">
<h3>{{trans "Shipping Info"}}</h3>
<p>{{var formattedShippingAddress|raw}}</p>
</td>
{{/depend}}
</tr>
</table>
И в моем наблюдателе
$templateVars = array(
'store' => $this->storeManager->getStore(),
'message' => 'We processed your order ID We will contact you soon in mail for the acknowledgement if you not receive mail within 4 hours please get help from [email protected]',
'order' => $order,
'store'=> $store,
'productName'=> $productName
);
->setTemplateVars($templateVars)
Мой вопрос в том, как я могу установить значения информации о выставлении счетов, информации о доставке и способе оплаты в этом шаблоне электронной почты.
3 answers
Вставьте в свой конструктор средство визуализации классов, используемое для форматирования адреса заказа и некоторых классов для оплаты.
/**
* @var \Magento\Sales\Model\Order\Address\Renderer
*/
protected $addressRenderer;
/**
* @var \Magento\Payment\Helper\PaymentHelper
*/
protected $paymentHelper;
public function __construct(
\Magento\Sales\Model\Order\Address\Renderer $addressRenderer,
\Magento\Payment\Helper\PaymentHelper $paymentHelper
) {
$this->addressRenderer = $addressRenderer;
$this->paymentHelper = $paymentHelper;
}
Добавить в $templateVars
:
$templateVars = array(
'store' => $this->storeManager->getStore(),
'message' => 'We processed your order ID We will contact you soon in mail for the acknowledgement if you not receive mail within 4 hours please get help from [email protected]',
'order' => $order,
'store'=> $store,
'productName'=> $productName,
'payment_html' => $this->getPaymentHtml($order),
'formattedShippingAddress' => $this->getFormattedShippingAddress($order),
'formattedBillingAddress' => $this->getFormattedBillingAddress($order),
);
Создайте методы доставки, адреса выставления счетов и оплаты:
/**
* @param Order $order
* @return string|null
*/
protected function getFormattedShippingAddress($order)
{
return $order->getIsVirtual()
? null
: $this->addressRenderer->format($order->getShippingAddress(), 'html');
}
/**
* @param Order $order
* @return string|null
*/
protected function getFormattedBillingAddress($order)
{
return $this->addressRenderer->format($order->getBillingAddress(), 'html');
}
/**
* Get payment info block as html
*
* @param Order $order
* @return string
*/
protected function getPaymentHtml(Order $order)
{
return $this->paymentHelper->getInfoBlockHtml(
$order->getPayment(),
$this->identityContainer->getStore()->getStoreId()
);
}
Смотрите хороший пример здесь:
vendor/magento/module-sales/Model/Order/Email/Sender/OrderSender.php
vendor/magento/module-sales/view/frontend/email/order_new.html
$templateVars = array(
'store' => $this->storeManager->getStore(),
'message' => 'We processed your order ID We will contact you soon in mail for the acknowledgement if you not receive mail within 4 hours please get help from [email protected]',
'order' => $order,
'store'=> $store,
'productName'=> $productName
);
Вы можете использовать указанную выше переменную в шаблонах электронной почты, таких как
Для записи статического текста вы можете использовать ->{{trans "Дорогой"}}
Для переменной включения вы можете использовать ->{{var ProductName}}
Например, вы приветствуете своего клиента в почтовых шаблонах, таких как
<h1 style="font-size:22px;font-weight:normal;line-height:22px;margin:0 0 11px 0;">{{trans "Dear "}} {{var customer_name}},</h1>
В приведенном выше примере имя клиента - это индекс массива $Templatevars. Вам нужно получить имя клиента от наблюдателя, после чего вы можете передать это значение в массив $templatevars.
Для magento 2.3 замените это
\Magento\Payment\Helper\PaymentHelper $paymentHelper
С
\Magento\Payment\Helper\Data $paymentHelper