How to Add Conditional Statement in Email Template in magento2
Steps to Add Conditional Statement in Email Template in Magento 2:
Step 1: Create blog file “Index.php” at the below path
app/code/Vendor/Extension/Block/Index
Then add the code as follows
<?php
namespace Vendor\Extension\Block\Index;
class Index extends \Magento\Framework\View\Element\Template
{
public function __construct(\Magento\Catalog\Block\Product\Context $context, array $data = [])
{
parent::__construct($context, $data);
}
protected function _prepareLayout()
{
return parent::_prepareLayout();
}
}
Step 2: Create controller file “Index.php” at the below-mentioned path
app/code/Vendor/Extension/Controller/Index
Then add the following code-snippet
<?php
namespace Vendor\Extension\Controller\Index;
class Index extends \Magento\Framework\App\Action\Action
{
public function execute()
{
$this->_view->loadLayout();
$this->_view->getLayout()->initMessages();
$this->_view->renderLayout();
}
}
Step 3: Create controller file Post.php at the following path
app/code/Vendor/Extension/Controller/Index/Post.php
Then add the following code snippet
<?php
namespace Vendor\Extension\Controller\Index;
use Magento\Store\Model\StoreManagerInterface;
class Post extends \Magento\Framework\App\Action\Action
{
protected $_inlineTranslation;
protected $_transportBuilder;
protected $_scopeConfig;
protected $_logLoggerInterface;
protected $storeManager;
public function __construct(
\Magento\Framework\App\Action\Context $context,
\Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory,
\Magento\Framework\Translate\Inline\StateInterface $inlineTranslation,
\Magento\Framework\Mail\Template\TransportBuilder $transportBuilder,
\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
\Psr\Log\LoggerInterface $loggerInterface,
StoreManagerInterface $storeManager,
array $data = []
)
{
$this->_inlineTranslation = $inlineTranslation;
$this->_transportBuilder = $transportBuilder;
$this->_scopeConfig = $scopeConfig;
$this->_logLoggerInterface = $loggerInterface;
$this->messageManager = $context->getMessageManager();
$this->storeManager = $storeManager;
parent::__construct($context);
}
public function execute()
{
try
{
$post = $this->getRequest()->getPost();
// Send Mail
$this->_inlineTranslation->suspend();
$sender = [
'name' => $post['name'],
'email' => $post['email']
];
$transport = $this->_transportBuilder
->setTemplateIdentifier('customemail_email_template')
->setTemplateOptions(
[
'area' => 'frontend',
'store' => $this->storeManager->getStore()->getId()
]
)
->setTemplateVars([
'name2' => $post['name'],
'email2' => $post['email']
])
->setFromByScope($sender)
->addTo($post['email'],$post['name'])
->getTransport();
$transport->sendMessage();
$this->_inlineTranslation->resume();
$this->messageManager->addSuccess('Email sent successfully');
$this->_redirect('email/index/index');
} catch(\Exception $e){
$this->messageManager->addErrorMessage("Something Went Wrong");
}
}
}
Step 4: Create an “email_index_index.xml” file for the front side form display at the below path
app/code/Vendor/Extension/view/frontend/layout
Then add the below piece of code
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
<head>
<title>Inquiery Form</title>
</head>
<body>
<referenceContainer name="content">
<block class="Vendor\Extension\Block\Index\Index" name="customermail_index_index" template="Vendor_Extension::form.phtml"/>
</referenceContainer>
</body>
</page>
Step 5: Create form template “form.phtml” at the below path
app/code/Vendor/Extension/view/frontend/templates
Now add the following fragment of code
<form enctype="multipart/form-data" action="<?php echo $block->getBaseUrl().'email/index/post/';?>" name="customemaildata" method="post" id="contactForm-1" data-hasrequired="<?php echo __('* Required Fields') ?>" data-mage-init='{"validation":{}}'>
<fieldset class="fieldset">
<div class="field email required">
<label class="label" for="email"> Product Name :-</label>
<div class="control">
<select name="name" id="name">
<option value="0">Please Select</option>
<option value="1">Product - 1</option>
<option value="2">Product - 2</option>
<option value="3">Product - 3</option>
<option value="4">Product - 4</option>
<option value="5">Product - 5</option>
</select>
</div>
</div>
<div class="field email required">
<label class="label" for="email">Email:-</label>
<div class="control">
<input name="email" id="email" class="input-text" type="email" data-validate="{required:true, 'validate-email':true}"/>
</div>
</div>
</fieldset>
<div class="actions-toolbar">
<div class="primary">
<input type="hidden" name="hideit" id="hideit" value="" />
<button type="submit" title="<?php echo __('Submit') ?>" class="action submit primary">
<span><?php echo __('Submit') ?></span>
</button>
</div>
</div>
</form>
Step 6: Create an email template layout file “email_templates.xml” at the following path
app/code/Vendor/Extension/etc
Now add the following code
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Email:etc/email_templates.xsd">
<template id="customemail_email_template" label="Email Form" file="customeremail.html" type="html" module="Vendor_Extension" area="frontend"/>
</config>
Step 7: Create an email html file “customeremail.html” at the path underneath
app/code/Vendor/Extension/view/frontend/email
Then append the code given below
<body style="background:#F6F6F6; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:12px; margin:0; padding:0;">
<div style="background:#F6F6F6; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:12px; margin:0; padding:0;">
<table cellspacing="0" cellpadding="0" border="0" height="100%" width="100%">
<tr>
<tr>
<td valign="top" colspan="5">
<p style="border:1px solid #E0E0E0; font-size:12px; line-height:16px; margin:0; padding:13px 18px; background:#F9F9F9; text-align:center;"><strong>Product Information</strong></td>
</tr>
<!-- Method- 1 -->
{{depend name}}
<tr>
<td>
<p style="border:1px solid #E0E0E0; font-size:14px; line-height:16px; margin:0; padding:13px 18px; background:#F9F9F9;">product Id :- {{var name}} </p>
</td>
</tr>
{{/depend}}
<!-- Method - 1 -->
<!-- Method- 2 -->
{{if email}}
<tr>
<td>
<p style="border:1px solid #E0E0E0; font-size:14px; line-height:16px; margin:0; padding:13px 18px; background:#F9F9F9;"> {{var email}} if condition</p>
</td>
</tr>
{{/if}}
<!-- Method- 2-->
<!-- Method- 3 -->
{{block class='Magento\\Framework\\View\\Element\\Template'
area='frontend' template='Vendor_Extension::productinformation.phtml' name=$name}}
<!-- Method- 3 -->
</table>
</td>
</tr>
</table>
</div>
</body>
Step 8: Create template file “productinformation.phtml” for conditional value at the below path
app/code/Vendor/Extension/view/frontend/templates
And finally, add the below code
<?php
switch ($this->getData('name'))
{
case "0":
echo "<tr><td><p style='border:1px solid #E0E0E0; font-size:14px; line-height:16px; margin:0; padding:13px 18px; background:#F9F9F9;'> No Product Selected</p></td></tr>" ;
break;
case "1":
echo "<tr><td><p style='border:1px solid #E0E0E0; font-size:14px; line-height:16px; margin:0; padding:13px 18px; background:#F9F9F9;'> Product 1 Is Selected</p></td></tr>" ;
echo "<p> </p>" ;
break;
case "2":
echo "<tr><td><p style='border:1px solid #E0E0E0; font-size:14px; line-height:16px; margin:0; padding:13px 18px; background:#F9F9F9;'> Product 2 Is Selected</p></td></tr>" ;
break;
case "3":
echo "<tr><td><p style='border:1px solid #E0E0E0; font-size:14px; line-height:16px; margin:0; padding:13px 18px; background:#F9F9F9;'> Product 3 Is Selected</p></td></tr>" ;
break;
case "4":
echo "<tr><td><p style='border:1px solid #E0E0E0; font-size:14px; line-height:16px; margin:0; padding:13px 18px; background:#F9F9F9;'> Product 4 Is Selected</p></td></tr>" ;
break;
case "5":
echo "<tr><td><p style='border:1px solid #E0E0E0; font-size:14px; line-height:16px; margin:0; padding:13px 18px; background:#F9F9F9;'> Product 5 Is Selected</p></td></tr>" ;
break;
default:
Comments
Post a Comment