pass array from php file to phtml? The 2019 Stack Overflow Developer Survey Results Are In Unicorn Meta Zoo #1: Why another podcast? Announcing the arrival of Valued Associate #679: Cesar Manaralayout handle not working in custom emailProgramatically Sending Transactional Emails Doesn't Include ProductsLocaly made php to magento directory- magento 2Set custom price of product when adding to cart code not workingwhich phtml file is use for New Order Confirmation Template for Guest/Seller?How to change the email template depending on shipping method?Magento 2: How to edit existing Order without cancel?Add “Tax amount” to totals in “New order” email templateRequest for quote and checkout at same timeHow to send a purchase email to the suppliers manually by clicking a button on order detail page in Magento 2?
Using dividends to reduce short term capital gains?
Identify 80s or 90s comics with ripped creatures (not dwarves)
ELI5: Why do they say that Israel would have been the fourth country to land a spacecraft on the Moon and why do they call it low cost?
Make it rain characters
Why doesn't a hydraulic lever violate conservation of energy?
Does Parliament need to approve the new Brexit delay to 31 October 2019?
Drawing vertical/oblique lines in Metrical tree (tikz-qtree, tipa)
Simulating Exploding Dice
Loose spokes after only a few rides
Is an up-to-date browser secure on an out-of-date OS?
Why don't hard Brexiteers insist on a hard border to prevent illegal immigration after Brexit?
Is there a writing software that you can sort scenes like slides in PowerPoint?
How did the audience guess the pentatonic scale in Bobby McFerrin's presentation?
Do working physicists consider Newtonian mechanics to be "falsified"?
Would an alien lifeform be able to achieve space travel if lacking in vision?
The following signatures were invalid: EXPKEYSIG 1397BC53640DB551
What happens to a Warlock's expended Spell Slots when they gain a Level?
Mortgage adviser recommends a longer term than necessary combined with overpayments
Are there continuous functions who are the same in an interval but differ in at least one other point?
Does Parliament hold absolute power in the UK?
For what reasons would an animal species NOT cross a *horizontal* land bridge?
What can I do if neighbor is blocking my solar panels intentionally?
University's motivation for having tenure-track positions
Button changing its text & action. Good or terrible?
pass array from php file to phtml?
The 2019 Stack Overflow Developer Survey Results Are In
Unicorn Meta Zoo #1: Why another podcast?
Announcing the arrival of Valued Associate #679: Cesar Manaralayout handle not working in custom emailProgramatically Sending Transactional Emails Doesn't Include ProductsLocaly made php to magento directory- magento 2Set custom price of product when adding to cart code not workingwhich phtml file is use for New Order Confirmation Template for Guest/Seller?How to change the email template depending on shipping method?Magento 2: How to edit existing Order without cancel?Add “Tax amount” to totals in “New order” email templateRequest for quote and checkout at same timeHow to send a purchase email to the suppliers manually by clicking a button on order detail page in Magento 2?
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
i use observer on order place . sales_model_service_quote_submit_before
when order is place i get order items and each item has a seller id . i get email from seller ids.
and now send mail to those seller which has items in this order.
my observer code is
public function execute(MagentoFrameworkEventObserver $observer)
$orderData=array();
$order = $observer->getData('order');
$quote = $observer->getData('quote');
$quoteItems = $quote->getAllVisibleItems();
$orderData['customerName']=$order->getCustomerFirstname().' '.$order->getCustomerLastname();
foreach ($quoteItems as $quoteItem)
if ($quoteItem->getCurrentSellerId() != "")
$userdetail=$this->userFactory->create()->load($quoteItem->getCurrentSellerId());
$orderData['SellerEmail']=$userdetail->getEmail();
$orderData['productinfo'][]=$quoteItem->getName();
$orderData['productinfo'][]=$quoteItem->getSku();
$orderData['productinfo'][]=$quoteItem->getQty();
$orderData['productinfo'][]=$quoteItem->getPrice();
//$this->logger->info(print_r($orderData, true));
$this->Seller_mail_method($orderData);
return $this;
public function Seller_mail_method($getOrderParams)
/* Receiver Detail */
$receiverInfo = [
'name' => 'Reciver Name',
'email' => $getOrderParams['SellerEmail']
];
$store = $this->storeManager->getStore();
$TemplateParameter=[
'customerName'=>$getOrderParams['customerName'],
'orderItems'=>$getOrderParams['productinfo']
];
$transport = $this->transportBuilder->setTemplateIdentifier(
'seller_order_email_template'
)->setTemplateOptions(
['area' => 'frontend', 'store' => $store->getId()]
)->addTo(
$receiverInfo['email'], $receiverInfo['name']
)->setTemplateVars(
$TemplateParameter
)->setFrom(
'general'
)->getTransport();
try
// Send an email
$transport->sendMessage();
catch (Exception $e)
// Write a log message whenever get errors
$this->logger->critical($e->getMessage());
my seller_email_template.html
code is
template config_path="design/email/header_template" <!-- pathe of template header-->
<table>
<tr class="email-intro">
<td>
<p class="greeting">trans " <b>%customerName</b>," customerName=$customerName</p>
</td>
</tr>
<tr class="email-information">
<td>
<table class="email-items">
<tbody>
layout handle="sellers_email_order_items" area="frontend"
</tbody>
</table>
</td>
</tr>
</table>
template config_path="design/email/footer_template"
and phtml file code is
<?php
echo "testing";
?>
<?php //$_order = $block->getOrder() ?>
<?php if ($items): ?>
<?php //$_items = $_order->getAllItems(); ?>
<table class="email-items">
<thead>
<tr>
<th class="item-info">
<?= /* @escapeNotVerified */ __('Items') ?>
</th>
<th class="item-qty">
<?= /* @escapeNotVerified */ __('Qty') ?>
</th>
<th class="item-price">
<?= /* @escapeNotVerified */ __('Price') ?>
</th>
</tr>
</thead>
<?php foreach ($items as $item): ?>
// Here want to set items
<!-- <tr>-->
<!-- <td>-->
<!-- --><?//= $item["product"]; ?>
<!-- </td>-->
<!-- <td>-->
<!-- --><?//= $item["qty"]; ?>
<!-- </td>-->
<!-- <td>-->
<!-- --><?//= $item["price"]; ?>
<!-- </td>-->
<!-- </tr>-->
<?php endforeach; ?>
<tfoot class="order-totals">
</tfoot>
</table>
<?php endif; ?>
How can set $orderItems in phtm file ? my mail send correctly but now just set content.
please guide me .
there is problem in my code how can manage to set orderItems of same sellers. when call mail method these problem will resolve later . But now 1 order 1 item of 1 seller. Thanks
magento2 event-observer email-templates phtml getarray
add a comment |
i use observer on order place . sales_model_service_quote_submit_before
when order is place i get order items and each item has a seller id . i get email from seller ids.
and now send mail to those seller which has items in this order.
my observer code is
public function execute(MagentoFrameworkEventObserver $observer)
$orderData=array();
$order = $observer->getData('order');
$quote = $observer->getData('quote');
$quoteItems = $quote->getAllVisibleItems();
$orderData['customerName']=$order->getCustomerFirstname().' '.$order->getCustomerLastname();
foreach ($quoteItems as $quoteItem)
if ($quoteItem->getCurrentSellerId() != "")
$userdetail=$this->userFactory->create()->load($quoteItem->getCurrentSellerId());
$orderData['SellerEmail']=$userdetail->getEmail();
$orderData['productinfo'][]=$quoteItem->getName();
$orderData['productinfo'][]=$quoteItem->getSku();
$orderData['productinfo'][]=$quoteItem->getQty();
$orderData['productinfo'][]=$quoteItem->getPrice();
//$this->logger->info(print_r($orderData, true));
$this->Seller_mail_method($orderData);
return $this;
public function Seller_mail_method($getOrderParams)
/* Receiver Detail */
$receiverInfo = [
'name' => 'Reciver Name',
'email' => $getOrderParams['SellerEmail']
];
$store = $this->storeManager->getStore();
$TemplateParameter=[
'customerName'=>$getOrderParams['customerName'],
'orderItems'=>$getOrderParams['productinfo']
];
$transport = $this->transportBuilder->setTemplateIdentifier(
'seller_order_email_template'
)->setTemplateOptions(
['area' => 'frontend', 'store' => $store->getId()]
)->addTo(
$receiverInfo['email'], $receiverInfo['name']
)->setTemplateVars(
$TemplateParameter
)->setFrom(
'general'
)->getTransport();
try
// Send an email
$transport->sendMessage();
catch (Exception $e)
// Write a log message whenever get errors
$this->logger->critical($e->getMessage());
my seller_email_template.html
code is
template config_path="design/email/header_template" <!-- pathe of template header-->
<table>
<tr class="email-intro">
<td>
<p class="greeting">trans " <b>%customerName</b>," customerName=$customerName</p>
</td>
</tr>
<tr class="email-information">
<td>
<table class="email-items">
<tbody>
layout handle="sellers_email_order_items" area="frontend"
</tbody>
</table>
</td>
</tr>
</table>
template config_path="design/email/footer_template"
and phtml file code is
<?php
echo "testing";
?>
<?php //$_order = $block->getOrder() ?>
<?php if ($items): ?>
<?php //$_items = $_order->getAllItems(); ?>
<table class="email-items">
<thead>
<tr>
<th class="item-info">
<?= /* @escapeNotVerified */ __('Items') ?>
</th>
<th class="item-qty">
<?= /* @escapeNotVerified */ __('Qty') ?>
</th>
<th class="item-price">
<?= /* @escapeNotVerified */ __('Price') ?>
</th>
</tr>
</thead>
<?php foreach ($items as $item): ?>
// Here want to set items
<!-- <tr>-->
<!-- <td>-->
<!-- --><?//= $item["product"]; ?>
<!-- </td>-->
<!-- <td>-->
<!-- --><?//= $item["qty"]; ?>
<!-- </td>-->
<!-- <td>-->
<!-- --><?//= $item["price"]; ?>
<!-- </td>-->
<!-- </tr>-->
<?php endforeach; ?>
<tfoot class="order-totals">
</tfoot>
</table>
<?php endif; ?>
How can set $orderItems in phtm file ? my mail send correctly but now just set content.
please guide me .
there is problem in my code how can manage to set orderItems of same sellers. when call mail method these problem will resolve later . But now 1 order 1 item of 1 seller. Thanks
magento2 event-observer email-templates phtml getarray
Can you please provide some more information about the observer? Which event is used and the complete method. As far as I understand you want to pass data from that observer to the item renderer for transactional emails
– HelgeB
Apr 9 at 9:23
@HelgeB ! i edit my question please review question if you understand . please
– HaFiz Umer
Apr 9 at 9:44
i think may be session use here . to store orderitems in session and get session in phtml . is this suitable or other plz guide me
– HaFiz Umer
Apr 9 at 9:46
add a comment |
i use observer on order place . sales_model_service_quote_submit_before
when order is place i get order items and each item has a seller id . i get email from seller ids.
and now send mail to those seller which has items in this order.
my observer code is
public function execute(MagentoFrameworkEventObserver $observer)
$orderData=array();
$order = $observer->getData('order');
$quote = $observer->getData('quote');
$quoteItems = $quote->getAllVisibleItems();
$orderData['customerName']=$order->getCustomerFirstname().' '.$order->getCustomerLastname();
foreach ($quoteItems as $quoteItem)
if ($quoteItem->getCurrentSellerId() != "")
$userdetail=$this->userFactory->create()->load($quoteItem->getCurrentSellerId());
$orderData['SellerEmail']=$userdetail->getEmail();
$orderData['productinfo'][]=$quoteItem->getName();
$orderData['productinfo'][]=$quoteItem->getSku();
$orderData['productinfo'][]=$quoteItem->getQty();
$orderData['productinfo'][]=$quoteItem->getPrice();
//$this->logger->info(print_r($orderData, true));
$this->Seller_mail_method($orderData);
return $this;
public function Seller_mail_method($getOrderParams)
/* Receiver Detail */
$receiverInfo = [
'name' => 'Reciver Name',
'email' => $getOrderParams['SellerEmail']
];
$store = $this->storeManager->getStore();
$TemplateParameter=[
'customerName'=>$getOrderParams['customerName'],
'orderItems'=>$getOrderParams['productinfo']
];
$transport = $this->transportBuilder->setTemplateIdentifier(
'seller_order_email_template'
)->setTemplateOptions(
['area' => 'frontend', 'store' => $store->getId()]
)->addTo(
$receiverInfo['email'], $receiverInfo['name']
)->setTemplateVars(
$TemplateParameter
)->setFrom(
'general'
)->getTransport();
try
// Send an email
$transport->sendMessage();
catch (Exception $e)
// Write a log message whenever get errors
$this->logger->critical($e->getMessage());
my seller_email_template.html
code is
template config_path="design/email/header_template" <!-- pathe of template header-->
<table>
<tr class="email-intro">
<td>
<p class="greeting">trans " <b>%customerName</b>," customerName=$customerName</p>
</td>
</tr>
<tr class="email-information">
<td>
<table class="email-items">
<tbody>
layout handle="sellers_email_order_items" area="frontend"
</tbody>
</table>
</td>
</tr>
</table>
template config_path="design/email/footer_template"
and phtml file code is
<?php
echo "testing";
?>
<?php //$_order = $block->getOrder() ?>
<?php if ($items): ?>
<?php //$_items = $_order->getAllItems(); ?>
<table class="email-items">
<thead>
<tr>
<th class="item-info">
<?= /* @escapeNotVerified */ __('Items') ?>
</th>
<th class="item-qty">
<?= /* @escapeNotVerified */ __('Qty') ?>
</th>
<th class="item-price">
<?= /* @escapeNotVerified */ __('Price') ?>
</th>
</tr>
</thead>
<?php foreach ($items as $item): ?>
// Here want to set items
<!-- <tr>-->
<!-- <td>-->
<!-- --><?//= $item["product"]; ?>
<!-- </td>-->
<!-- <td>-->
<!-- --><?//= $item["qty"]; ?>
<!-- </td>-->
<!-- <td>-->
<!-- --><?//= $item["price"]; ?>
<!-- </td>-->
<!-- </tr>-->
<?php endforeach; ?>
<tfoot class="order-totals">
</tfoot>
</table>
<?php endif; ?>
How can set $orderItems in phtm file ? my mail send correctly but now just set content.
please guide me .
there is problem in my code how can manage to set orderItems of same sellers. when call mail method these problem will resolve later . But now 1 order 1 item of 1 seller. Thanks
magento2 event-observer email-templates phtml getarray
i use observer on order place . sales_model_service_quote_submit_before
when order is place i get order items and each item has a seller id . i get email from seller ids.
and now send mail to those seller which has items in this order.
my observer code is
public function execute(MagentoFrameworkEventObserver $observer)
$orderData=array();
$order = $observer->getData('order');
$quote = $observer->getData('quote');
$quoteItems = $quote->getAllVisibleItems();
$orderData['customerName']=$order->getCustomerFirstname().' '.$order->getCustomerLastname();
foreach ($quoteItems as $quoteItem)
if ($quoteItem->getCurrentSellerId() != "")
$userdetail=$this->userFactory->create()->load($quoteItem->getCurrentSellerId());
$orderData['SellerEmail']=$userdetail->getEmail();
$orderData['productinfo'][]=$quoteItem->getName();
$orderData['productinfo'][]=$quoteItem->getSku();
$orderData['productinfo'][]=$quoteItem->getQty();
$orderData['productinfo'][]=$quoteItem->getPrice();
//$this->logger->info(print_r($orderData, true));
$this->Seller_mail_method($orderData);
return $this;
public function Seller_mail_method($getOrderParams)
/* Receiver Detail */
$receiverInfo = [
'name' => 'Reciver Name',
'email' => $getOrderParams['SellerEmail']
];
$store = $this->storeManager->getStore();
$TemplateParameter=[
'customerName'=>$getOrderParams['customerName'],
'orderItems'=>$getOrderParams['productinfo']
];
$transport = $this->transportBuilder->setTemplateIdentifier(
'seller_order_email_template'
)->setTemplateOptions(
['area' => 'frontend', 'store' => $store->getId()]
)->addTo(
$receiverInfo['email'], $receiverInfo['name']
)->setTemplateVars(
$TemplateParameter
)->setFrom(
'general'
)->getTransport();
try
// Send an email
$transport->sendMessage();
catch (Exception $e)
// Write a log message whenever get errors
$this->logger->critical($e->getMessage());
my seller_email_template.html
code is
template config_path="design/email/header_template" <!-- pathe of template header-->
<table>
<tr class="email-intro">
<td>
<p class="greeting">trans " <b>%customerName</b>," customerName=$customerName</p>
</td>
</tr>
<tr class="email-information">
<td>
<table class="email-items">
<tbody>
layout handle="sellers_email_order_items" area="frontend"
</tbody>
</table>
</td>
</tr>
</table>
template config_path="design/email/footer_template"
and phtml file code is
<?php
echo "testing";
?>
<?php //$_order = $block->getOrder() ?>
<?php if ($items): ?>
<?php //$_items = $_order->getAllItems(); ?>
<table class="email-items">
<thead>
<tr>
<th class="item-info">
<?= /* @escapeNotVerified */ __('Items') ?>
</th>
<th class="item-qty">
<?= /* @escapeNotVerified */ __('Qty') ?>
</th>
<th class="item-price">
<?= /* @escapeNotVerified */ __('Price') ?>
</th>
</tr>
</thead>
<?php foreach ($items as $item): ?>
// Here want to set items
<!-- <tr>-->
<!-- <td>-->
<!-- --><?//= $item["product"]; ?>
<!-- </td>-->
<!-- <td>-->
<!-- --><?//= $item["qty"]; ?>
<!-- </td>-->
<!-- <td>-->
<!-- --><?//= $item["price"]; ?>
<!-- </td>-->
<!-- </tr>-->
<?php endforeach; ?>
<tfoot class="order-totals">
</tfoot>
</table>
<?php endif; ?>
How can set $orderItems in phtm file ? my mail send correctly but now just set content.
please guide me .
there is problem in my code how can manage to set orderItems of same sellers. when call mail method these problem will resolve later . But now 1 order 1 item of 1 seller. Thanks
magento2 event-observer email-templates phtml getarray
magento2 event-observer email-templates phtml getarray
edited Apr 9 at 11:40
HelgeB
3,2181323
3,2181323
asked Apr 9 at 8:06
HaFiz UmerHaFiz Umer
4319
4319
Can you please provide some more information about the observer? Which event is used and the complete method. As far as I understand you want to pass data from that observer to the item renderer for transactional emails
– HelgeB
Apr 9 at 9:23
@HelgeB ! i edit my question please review question if you understand . please
– HaFiz Umer
Apr 9 at 9:44
i think may be session use here . to store orderitems in session and get session in phtml . is this suitable or other plz guide me
– HaFiz Umer
Apr 9 at 9:46
add a comment |
Can you please provide some more information about the observer? Which event is used and the complete method. As far as I understand you want to pass data from that observer to the item renderer for transactional emails
– HelgeB
Apr 9 at 9:23
@HelgeB ! i edit my question please review question if you understand . please
– HaFiz Umer
Apr 9 at 9:44
i think may be session use here . to store orderitems in session and get session in phtml . is this suitable or other plz guide me
– HaFiz Umer
Apr 9 at 9:46
Can you please provide some more information about the observer? Which event is used and the complete method. As far as I understand you want to pass data from that observer to the item renderer for transactional emails
– HelgeB
Apr 9 at 9:23
Can you please provide some more information about the observer? Which event is used and the complete method. As far as I understand you want to pass data from that observer to the item renderer for transactional emails
– HelgeB
Apr 9 at 9:23
@HelgeB ! i edit my question please review question if you understand . please
– HaFiz Umer
Apr 9 at 9:44
@HelgeB ! i edit my question please review question if you understand . please
– HaFiz Umer
Apr 9 at 9:44
i think may be session use here . to store orderitems in session and get session in phtml . is this suitable or other plz guide me
– HaFiz Umer
Apr 9 at 9:46
i think may be session use here . to store orderitems in session and get session in phtml . is this suitable or other plz guide me
– HaFiz Umer
Apr 9 at 9:46
add a comment |
1 Answer
1
active
oldest
votes
OK, if you send the mail from your observer, it is possible to pass the object to the item renderer template. As far as I can see the passing to seller_email_template.html
already works since you use $customerName
, so you just have to pass the $orderItems
to the item renderer block.
I guess with the following changes you should get the order items in your email:
seller_email_template.html:
layout handle="sellers_email_order_items" orderItems=$orderItems area="frontend"
items.phtml:
<?php $items = $block->getOrderItems();?>
<?php if ($items): ?>
...
In your observer you should populate the array with the keys you want to access later in the template. I guess you should change the foreach loop like this:
foreach ($quoteItems as $quoteItem)
if ($quoteItem->getCurrentSellerId() != "")
$userdetail=$this->userFactory->create()->load($quoteItem->getCurrentSellerId());
$orderData['SellerEmail']=$userdetail->getEmail();
$orderData['productinfo'][] = [
'name' => $quoteItem->getName(),
'sku' => $quoteItem->getSku(),
'qty' => $quoteItem->getQty(),
'price' => $quoteItem->getPrice()
];
let me try it wait . . . .
– HaFiz Umer
Apr 9 at 10:11
You have also an error where you populate the array, I have updated the answer regarding that error
– HelgeB
Apr 9 at 10:18
HelgeB bro ! error in mailError filtering template: CodilityVendorOrderObserverOrderItemToOrder does not implement BlockInterface
MyOderItemToOrder.php
is not implemented with block interface.<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd" label="Email Product List" design_abstraction="custom"> <block class="CodilityVendorOrderObserverOrderItemToOrder" name="seller_items_block" template="Codility_VendorOrder::email/SellerItems.phtml" /> </body>
– HaFiz Umer
Apr 9 at 10:28
my ` CodilityVendorOrderObserverOrderItemToOrder` in implemented with ObserverInterface. Thats why<?php $items = $block->getOrderItems();?>
not work. how can do that
– HaFiz Umer
Apr 9 at 10:30
Then you need to create a block there you can't use an observer in the layout :-) Just create a simple block which extendsMagentoFrameworkViewElementTemplate
and put that in your layout.
– HelgeB
Apr 9 at 10:33
|
show 3 more comments
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "479"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmagento.stackexchange.com%2fquestions%2f269319%2fpass-array-from-php-file-to-phtml%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
OK, if you send the mail from your observer, it is possible to pass the object to the item renderer template. As far as I can see the passing to seller_email_template.html
already works since you use $customerName
, so you just have to pass the $orderItems
to the item renderer block.
I guess with the following changes you should get the order items in your email:
seller_email_template.html:
layout handle="sellers_email_order_items" orderItems=$orderItems area="frontend"
items.phtml:
<?php $items = $block->getOrderItems();?>
<?php if ($items): ?>
...
In your observer you should populate the array with the keys you want to access later in the template. I guess you should change the foreach loop like this:
foreach ($quoteItems as $quoteItem)
if ($quoteItem->getCurrentSellerId() != "")
$userdetail=$this->userFactory->create()->load($quoteItem->getCurrentSellerId());
$orderData['SellerEmail']=$userdetail->getEmail();
$orderData['productinfo'][] = [
'name' => $quoteItem->getName(),
'sku' => $quoteItem->getSku(),
'qty' => $quoteItem->getQty(),
'price' => $quoteItem->getPrice()
];
let me try it wait . . . .
– HaFiz Umer
Apr 9 at 10:11
You have also an error where you populate the array, I have updated the answer regarding that error
– HelgeB
Apr 9 at 10:18
HelgeB bro ! error in mailError filtering template: CodilityVendorOrderObserverOrderItemToOrder does not implement BlockInterface
MyOderItemToOrder.php
is not implemented with block interface.<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd" label="Email Product List" design_abstraction="custom"> <block class="CodilityVendorOrderObserverOrderItemToOrder" name="seller_items_block" template="Codility_VendorOrder::email/SellerItems.phtml" /> </body>
– HaFiz Umer
Apr 9 at 10:28
my ` CodilityVendorOrderObserverOrderItemToOrder` in implemented with ObserverInterface. Thats why<?php $items = $block->getOrderItems();?>
not work. how can do that
– HaFiz Umer
Apr 9 at 10:30
Then you need to create a block there you can't use an observer in the layout :-) Just create a simple block which extendsMagentoFrameworkViewElementTemplate
and put that in your layout.
– HelgeB
Apr 9 at 10:33
|
show 3 more comments
OK, if you send the mail from your observer, it is possible to pass the object to the item renderer template. As far as I can see the passing to seller_email_template.html
already works since you use $customerName
, so you just have to pass the $orderItems
to the item renderer block.
I guess with the following changes you should get the order items in your email:
seller_email_template.html:
layout handle="sellers_email_order_items" orderItems=$orderItems area="frontend"
items.phtml:
<?php $items = $block->getOrderItems();?>
<?php if ($items): ?>
...
In your observer you should populate the array with the keys you want to access later in the template. I guess you should change the foreach loop like this:
foreach ($quoteItems as $quoteItem)
if ($quoteItem->getCurrentSellerId() != "")
$userdetail=$this->userFactory->create()->load($quoteItem->getCurrentSellerId());
$orderData['SellerEmail']=$userdetail->getEmail();
$orderData['productinfo'][] = [
'name' => $quoteItem->getName(),
'sku' => $quoteItem->getSku(),
'qty' => $quoteItem->getQty(),
'price' => $quoteItem->getPrice()
];
let me try it wait . . . .
– HaFiz Umer
Apr 9 at 10:11
You have also an error where you populate the array, I have updated the answer regarding that error
– HelgeB
Apr 9 at 10:18
HelgeB bro ! error in mailError filtering template: CodilityVendorOrderObserverOrderItemToOrder does not implement BlockInterface
MyOderItemToOrder.php
is not implemented with block interface.<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd" label="Email Product List" design_abstraction="custom"> <block class="CodilityVendorOrderObserverOrderItemToOrder" name="seller_items_block" template="Codility_VendorOrder::email/SellerItems.phtml" /> </body>
– HaFiz Umer
Apr 9 at 10:28
my ` CodilityVendorOrderObserverOrderItemToOrder` in implemented with ObserverInterface. Thats why<?php $items = $block->getOrderItems();?>
not work. how can do that
– HaFiz Umer
Apr 9 at 10:30
Then you need to create a block there you can't use an observer in the layout :-) Just create a simple block which extendsMagentoFrameworkViewElementTemplate
and put that in your layout.
– HelgeB
Apr 9 at 10:33
|
show 3 more comments
OK, if you send the mail from your observer, it is possible to pass the object to the item renderer template. As far as I can see the passing to seller_email_template.html
already works since you use $customerName
, so you just have to pass the $orderItems
to the item renderer block.
I guess with the following changes you should get the order items in your email:
seller_email_template.html:
layout handle="sellers_email_order_items" orderItems=$orderItems area="frontend"
items.phtml:
<?php $items = $block->getOrderItems();?>
<?php if ($items): ?>
...
In your observer you should populate the array with the keys you want to access later in the template. I guess you should change the foreach loop like this:
foreach ($quoteItems as $quoteItem)
if ($quoteItem->getCurrentSellerId() != "")
$userdetail=$this->userFactory->create()->load($quoteItem->getCurrentSellerId());
$orderData['SellerEmail']=$userdetail->getEmail();
$orderData['productinfo'][] = [
'name' => $quoteItem->getName(),
'sku' => $quoteItem->getSku(),
'qty' => $quoteItem->getQty(),
'price' => $quoteItem->getPrice()
];
OK, if you send the mail from your observer, it is possible to pass the object to the item renderer template. As far as I can see the passing to seller_email_template.html
already works since you use $customerName
, so you just have to pass the $orderItems
to the item renderer block.
I guess with the following changes you should get the order items in your email:
seller_email_template.html:
layout handle="sellers_email_order_items" orderItems=$orderItems area="frontend"
items.phtml:
<?php $items = $block->getOrderItems();?>
<?php if ($items): ?>
...
In your observer you should populate the array with the keys you want to access later in the template. I guess you should change the foreach loop like this:
foreach ($quoteItems as $quoteItem)
if ($quoteItem->getCurrentSellerId() != "")
$userdetail=$this->userFactory->create()->load($quoteItem->getCurrentSellerId());
$orderData['SellerEmail']=$userdetail->getEmail();
$orderData['productinfo'][] = [
'name' => $quoteItem->getName(),
'sku' => $quoteItem->getSku(),
'qty' => $quoteItem->getQty(),
'price' => $quoteItem->getPrice()
];
edited Apr 9 at 10:22
answered Apr 9 at 10:09
HelgeBHelgeB
3,2181323
3,2181323
let me try it wait . . . .
– HaFiz Umer
Apr 9 at 10:11
You have also an error where you populate the array, I have updated the answer regarding that error
– HelgeB
Apr 9 at 10:18
HelgeB bro ! error in mailError filtering template: CodilityVendorOrderObserverOrderItemToOrder does not implement BlockInterface
MyOderItemToOrder.php
is not implemented with block interface.<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd" label="Email Product List" design_abstraction="custom"> <block class="CodilityVendorOrderObserverOrderItemToOrder" name="seller_items_block" template="Codility_VendorOrder::email/SellerItems.phtml" /> </body>
– HaFiz Umer
Apr 9 at 10:28
my ` CodilityVendorOrderObserverOrderItemToOrder` in implemented with ObserverInterface. Thats why<?php $items = $block->getOrderItems();?>
not work. how can do that
– HaFiz Umer
Apr 9 at 10:30
Then you need to create a block there you can't use an observer in the layout :-) Just create a simple block which extendsMagentoFrameworkViewElementTemplate
and put that in your layout.
– HelgeB
Apr 9 at 10:33
|
show 3 more comments
let me try it wait . . . .
– HaFiz Umer
Apr 9 at 10:11
You have also an error where you populate the array, I have updated the answer regarding that error
– HelgeB
Apr 9 at 10:18
HelgeB bro ! error in mailError filtering template: CodilityVendorOrderObserverOrderItemToOrder does not implement BlockInterface
MyOderItemToOrder.php
is not implemented with block interface.<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd" label="Email Product List" design_abstraction="custom"> <block class="CodilityVendorOrderObserverOrderItemToOrder" name="seller_items_block" template="Codility_VendorOrder::email/SellerItems.phtml" /> </body>
– HaFiz Umer
Apr 9 at 10:28
my ` CodilityVendorOrderObserverOrderItemToOrder` in implemented with ObserverInterface. Thats why<?php $items = $block->getOrderItems();?>
not work. how can do that
– HaFiz Umer
Apr 9 at 10:30
Then you need to create a block there you can't use an observer in the layout :-) Just create a simple block which extendsMagentoFrameworkViewElementTemplate
and put that in your layout.
– HelgeB
Apr 9 at 10:33
let me try it wait . . . .
– HaFiz Umer
Apr 9 at 10:11
let me try it wait . . . .
– HaFiz Umer
Apr 9 at 10:11
You have also an error where you populate the array, I have updated the answer regarding that error
– HelgeB
Apr 9 at 10:18
You have also an error where you populate the array, I have updated the answer regarding that error
– HelgeB
Apr 9 at 10:18
HelgeB bro ! error in mail
Error filtering template: CodilityVendorOrderObserverOrderItemToOrder does not implement BlockInterface
My OderItemToOrder.php
is not implemented with block interface. <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd" label="Email Product List" design_abstraction="custom"> <block class="CodilityVendorOrderObserverOrderItemToOrder" name="seller_items_block" template="Codility_VendorOrder::email/SellerItems.phtml" /> </body>
– HaFiz Umer
Apr 9 at 10:28
HelgeB bro ! error in mail
Error filtering template: CodilityVendorOrderObserverOrderItemToOrder does not implement BlockInterface
My OderItemToOrder.php
is not implemented with block interface. <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd" label="Email Product List" design_abstraction="custom"> <block class="CodilityVendorOrderObserverOrderItemToOrder" name="seller_items_block" template="Codility_VendorOrder::email/SellerItems.phtml" /> </body>
– HaFiz Umer
Apr 9 at 10:28
my ` CodilityVendorOrderObserverOrderItemToOrder` in implemented with ObserverInterface. Thats why
<?php $items = $block->getOrderItems();?>
not work. how can do that– HaFiz Umer
Apr 9 at 10:30
my ` CodilityVendorOrderObserverOrderItemToOrder` in implemented with ObserverInterface. Thats why
<?php $items = $block->getOrderItems();?>
not work. how can do that– HaFiz Umer
Apr 9 at 10:30
Then you need to create a block there you can't use an observer in the layout :-) Just create a simple block which extends
MagentoFrameworkViewElementTemplate
and put that in your layout.– HelgeB
Apr 9 at 10:33
Then you need to create a block there you can't use an observer in the layout :-) Just create a simple block which extends
MagentoFrameworkViewElementTemplate
and put that in your layout.– HelgeB
Apr 9 at 10:33
|
show 3 more comments
Thanks for contributing an answer to Magento Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmagento.stackexchange.com%2fquestions%2f269319%2fpass-array-from-php-file-to-phtml%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Can you please provide some more information about the observer? Which event is used and the complete method. As far as I understand you want to pass data from that observer to the item renderer for transactional emails
– HelgeB
Apr 9 at 9:23
@HelgeB ! i edit my question please review question if you understand . please
– HaFiz Umer
Apr 9 at 9:44
i think may be session use here . to store orderitems in session and get session in phtml . is this suitable or other plz guide me
– HaFiz Umer
Apr 9 at 9:46