Skip to content

Commit d434ebc

Browse files
add event to adjust template vars for shipment email
1 parent 811e035 commit d434ebc

File tree

1 file changed

+32
-11
lines changed

1 file changed

+32
-11
lines changed

app/code/Magento/Sales/Model/Order/Email/Sender/ShipmentSender.php

Lines changed: 32 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
use Magento\Sales\Model\Order\Shipment;
1414
use Magento\Sales\Model\Resource\Order\Shipment as ShipmentResource;
1515
use Magento\Sales\Model\Order\Address\Renderer;
16+
use Magento\Framework\Event\ManagerInterface;
1617

1718
/**
1819
* Class ShipmentSender
@@ -34,26 +35,36 @@ class ShipmentSender extends NotifySender
3435
*/
3536
protected $addressRenderer;
3637

38+
/**
39+
* Application Event Dispatcher
40+
*
41+
* @var ManagerInterface
42+
*/
43+
protected $eventManager;
44+
3745
/**
3846
* @param Template $templateContainer
3947
* @param ShipmentIdentity $identityContainer
4048
* @param Order\Email\SenderBuilderFactory $senderBuilderFactory
4149
* @param PaymentHelper $paymentHelper
4250
* @param ShipmentResource $shipmentResource
4351
* @param Renderer $addressRenderer
52+
* @param ManagerInterface $eventManager
4453
*/
4554
public function __construct(
4655
Template $templateContainer,
4756
ShipmentIdentity $identityContainer,
4857
\Magento\Sales\Model\Order\Email\SenderBuilderFactory $senderBuilderFactory,
4958
PaymentHelper $paymentHelper,
5059
ShipmentResource $shipmentResource,
51-
Renderer $addressRenderer
60+
Renderer $addressRenderer,
61+
ManagerInterface $eventManager
5262
) {
5363
parent::__construct($templateContainer, $identityContainer, $senderBuilderFactory);
5464
$this->paymentHelper = $paymentHelper;
5565
$this->shipmentResource = $shipmentResource;
5666
$this->addressRenderer = $addressRenderer;
67+
$this->eventManager = $eventManager;
5768
}
5869

5970
/**
@@ -73,18 +84,28 @@ public function send(Shipment $shipment, $notify = true, $comment = '')
7384
$formattedShippingAddress = '';
7485
}
7586
$formattedBillingAddress = $this->addressRenderer->format($order->getBillingAddress(), 'html');
76-
$this->templateContainer->setTemplateVars(
77-
[
78-
'order' => $order,
79-
'shipment' => $shipment,
80-
'comment' => $comment,
81-
'billing' => $order->getBillingAddress(),
82-
'payment_html' => $this->getPaymentHtml($order),
83-
'store' => $order->getStore(),
84-
'formattedShippingAddress' => $formattedShippingAddress,
85-
'formattedBillingAddress' => $formattedBillingAddress,
87+
88+
$transport = new \Magento\Framework\Object(
89+
['templateVars' =>
90+
[
91+
'order' => $order,
92+
'shipment' => $shipment,
93+
'comment' => $comment,
94+
'billing' => $order->getBillingAddress(),
95+
'payment_html' => $this->getPaymentHtml($order),
96+
'store' => $order->getStore(),
97+
'formattedShippingAddress' => $formattedShippingAddress,
98+
'formattedBillingAddress' => $formattedBillingAddress,
99+
]
86100
]
87101
);
102+
103+
$this->eventManager->dispatch(
104+
'email_shipment_set_template_vars_before', array('sender' => $this, 'transport' => $transport)
105+
);
106+
107+
$this->templateContainer->setTemplateVars($transport->getTemplateVars());
108+
88109
$result = $this->checkAndSend($order, $notify);
89110
if ($result) {
90111
$shipment->setEmailSent(true);

0 commit comments

Comments
 (0)