Как установить значения информации о выставлении счетов и информации о доставке в пользовательских шаблонах электронной почты?


Это мой 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)

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

Author: Khoa TruongDinh, 2016-09-16

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

 1
Author: Khoa TruongDinh, 2016-09-16 05:01:43
$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.

 0
Author: Bilal Usean, 2016-09-16 05:23:38

Для magento 2.3 замените это

\Magento\Payment\Helper\PaymentHelper $paymentHelper

С

\Magento\Payment\Helper\Data $paymentHelper
 0
Author: Tudor Rogojanu, 2019-04-18 09:58:18