Get info from pop-up form into email template
-
03-03-2021 - |
解决方案
You can create a <form>
and assign input field name as follows:
<form action="<?= $block->escapeUrl($block->getSaveFormAction()) ?>"
id="newsletter-form"
class="newsletter-form"
method="post"
data-hasrequired="<?php /* @escapeNotVerified */ echo __('* Required Fields') ?>"
data-mage-init='{"validation":{}}'>
...
<input type="text" name="newsletter[firstname]" placeholder="First Name" />
<input type="text" name="newsletter[lastname]" placeholder="Last Name" />
<input type="text" name="newsletter[email]" placeholder="Email Address" />
...
</form>
So you can get form values in your controller as follows:
Namespace/Module/Controller/Index/Save.php
public function execute() {
$post = (array) $this->getRequest()->getPost();
// Get newsletter data
$newsletterData = $post['newsletter'];
$transport = $this->transportBuilder
->setTemplateIdentifier('newsletter_email_email_template')
->setTemplateOptions([
'area' => \Magento\Framework\App\Area::AREA_FRONTEND,
'store' => $storeId()
])
->setTemplateVars($newsletterData) // set newsletter data in email template
->setFrom(['email' => $fromEmail, 'name' => $fromName])
->addTo($data['email'])
->setReplyTo($fromEmail, $fromName)
->getTransport();
$transport->sendMessage();
}
You will get newsletter data in form of following variables:
Namespace/Module/view/frontend/email/newsletter.html
First Name: {{var firstname}}
Last Name: {{var lastname}}
Email Address: {{var email}}
I hope this may helpful to you!!